前言
前文讲述了 Python 的输入输出以及变量的相关知识点, 本节将探讨 Python 的数据类型以及数据之间的运算方式!
一, Python 数据类型
上一节弄清了变量, 其实变量所指向的值是有自己独特的数据类型的, 这些数据类型可能代表不同的数据, 在 Python 中, 主要有以下几种数据类型:
整形(int)
在计算机中, 整数的位数其实是有范围的, 并没有我们想象的那样拥有无限的位数, 而且, 在不同的机器上整数的位数可能不同, 例如:
32 位系统: 整数的位数就是 32 位, 寻址范围为:-231 ~ 231-1 , 即 - 2147483648 ~ 2147483647
64 位系统: 整数的位数就是 64 位, 寻址范围为:-263 ~ 263-1 , 即 - 9223372036854775808 ~ 9223372036854775807
长整形(long)
在 Python 中, 长整形整数并没有指定位数, 也就是说, 长整形整数可以无限大, 但是由于机器本身的限制, 往往并不能无限大, 到一定范围也就不行了.
浮点型(float)
上面两种数据类型都是整数, 但在实际并不可能全是整数, 还有小数啊, 于是浮点型便应运而生, 说白了浮点型就是小数, 并且可以使用科学计数, 在计算机中, 科学计数的倍数 10 用 e 代替, 如: 5.21x105 就写成 5.21e9, 也可以写成 521e7
复数(complex)
上面三种数据类型组合起来是实数, 其实科学计算中常常用到复数, 在 Python 中, 存在复数的数据类型, 一般形式为: x+yj, 式中 x,y 都是实数, 例如: 5+6j
布尔值(True,False)
布尔值就俩: 真, 假, Python 中用 True,False 表示, 一定要注意首字母大写, Python 中是区分大小写的, 一定要注意.
- In [77]: 5==6
- Out[77]: False
- In [78]: 3>2
- Out[78]: True
- In [79]: True == True
- Out[79]: True
- In [80]: True == False
- Out[80]: False
空值(None)
空值就一个: None, 这个空值是很有趣的, None 不可以理解为 0, 因为 0 不是空值, 就好像温度是 0 摄氏度一样, 0 摄氏度是有温度的(~▽~)"
字符串(str)
字符串可能是编写 Python 中用到的最多的数据类型, 只要是用引号引起来的就是字符串. Python 中是不区分单引号, 双引号和三引号的, 他们是相同的:
- In [81]: 'Hello,world!'
- Out[81]: 'Hello,world!'
- In [82]: "Hello,world!"
- Out[82]: 'Hello,world!'
- In [83]: '''Hello,world'''
- Out[83]: 'Hello,world'
肯定有萌新会问, 搞这么多幺蛾子干啥, 统一用一个不就完了, 我就默默笑笑不说话:
- In [84]: 'i'm MinuteSheep' File"<ipython-input-84-a2a810ee38cb>", line 1
- 'i'm MinuteSheep'
- ^
- SyntaxError: invalid syntax
看! 报错了竟然, 为什么呢? 因为 Python 会自动匹配最近的符号与之闭合, 所以就会出现上面的情况, 做如下修改:
In [85]: "i'm MinuteSheep"Out[85]:"i'm MinuteSheep"
(萌新: 你个糟老头子坏得很╰(‵□′)╯)
同样的, 三引号用于多行, 或者内容符号混乱的情况:
- In [87]: '''i'm MinuteSheep,i said:"i'm the best man in the world!"'''Out[87]:'i\'m MinuteSheep,i said:"i\'m the best man in the world!"'
- In [86]: ''' ...: i'm MinuteSheep,
- ...: i said:
- ...: "i'm the best man in the world!" ...:'''
- Out[86]: '\ni\'m MinuteSheep,\ni said:\n"i\'m the best man in the world!"\n'
完美解决, 还记得 \ n 是什么吗, 是换行意思的啦, 同样你会发现 i'm 变成了 i\'m, 这其实是转义的显示, 转义以后会讲到的啦
又有萌新出来作妖了, 你上一节不是说三引号是多行注释吗, 这一节怎么变成了字符串啦?
这个问题问的好! 看我的解释, 有图有真相:
直接三引号内容, 是注释, 只要将三引号内容赋给变量, 就是字符串
字符串还有很多方法, 之后会专门有一小节详细的讲解字符串的方法.
列表(list)
对于列表, 萌新可能会很陌生, 你可以暂时把它理解为一维数组, 列表的在 Python 中的使用次数也是相当多的, 是除字符串以外必须掌握的一种数据类型. 来看看列表长啥样:
- In [88]: ['MinuteSheep', 'LiMing', '123', 123]
- Out[88]: ['MinuteSheep', 'LiMing', '123', 123]
可以看到, 被一对方括号括起来的数据就是列表, 刘表里面可以又其他数据类型, 上面的列表包括: 字符串和整型. 当然, 列表可以包含列表, 称为列表的嵌套:
- In [89]: ['MinuteSheep', ['LiMing', 123]]
- Out[89]: ['MinuteSheep', ['LiMing', 123]]
关于列表, 还有好多具体的方法, 这里不一一介绍, 之后也会有专门的一小节讲解列表方法.
元组(tuple)
元组可能就更陌生了, 元组其实是不可变列表, 列表用一队方括号括起来, 元组则用一对圆括号括起来, 列表是可以被操作的(比如增, 删, 改, 查), 但是元组不行, 元组不可被更改, 来看看元组长啥样哇:
- In [90]: ('MinuteSheep','LiMing',123)
- Out[90]: ('MinuteSheep', 'LiMing', 123)
字典(dict)
字典是 Python 的一种非常强大的数据类型, 通过键值对的形式将数据保存下来, 提高了数据增, 删, 改, 查的速度, 通常作为数据存储的格式, 也来看看字典长啥样哇:
- In [91]: {
- 'name': 'MinuteSheep', 'gender' : 'male', 'age': 99
- }
- Out[91]: {
- 'age': 99, 'gender': 'male', 'name': 'MinuteSheep'
- }
可以看到, 字典是用一对花括号括起来的, 并且以'key' : 'value' 的形式存储, 同样, 字典里面可以包含其他数据类型, 上面的字典包括: 字符串, 整型. 当然, 字典也可以嵌套:
- In [92]: {
- 'name' : 'MinuteSheep', 'age': {
- 'young' : 15, 'old' : 99
- }
- }
- Out[92]: {
- 'age': {
- 'old': 99, 'young': 15
- }, 'name': 'MinuteSheep'
- }
字典也会有专门的一节去讲解它的方法.
- In [93]: 1+2
- Out[93]: 3
- In [95]: 1-2
- Out[95]: -1
- In [96]: 1*2
- Out[96]: 2
- In [97]: 5/2
- Out[97]: 2.5
- In [98]: 5%2
- Out[98]: 1
- In [99]: 5//2
- Out[99]: 2
- In [100]: 5**2
- Out[100]: 25
- In [102]: a=5
- In [103]: b=6
- In [104]: c=a+b
- In [105]: c
- Out[105]: 11
- In [106]: a=5
- In [107]: b=6
- In [108]: b+=a
- In [109]: b
- Out[109]: 11
- In [111]: a=5
- In [112]: b=6
- In [113]: b-=a
- In [114]: b
- Out[114]: 1
- In [115]: a=5
- In [116]: b=6
- In [117]: b*=a
- In [118]: b
- Out[118]: 30
- In [119]: a=5
- In [120]: b=6
- In [121]: b/=a
- In [122]: b
- Out[122]: 1.2
- In [123]: a=5
- In [124]: b=6
- In [125]: b%=a
- In [126]: b
- Out[126]: 1
- In [127]: a=5
- In [128]: b=6
- In [129]: b//=a
- In [130]: b
- Out[130]: 1
- In [131]: a=5
- In [132]: b=6
- In [133]: b**=a
- In [134]: b
- Out[134]: 7776
- In [136]: 1==1
- Out[136]: True
- In [137]: 1==2
- Out[137]: False
- In [144]: 1!=1
- Out[144]: False
- In [145]: 1!=2
- Out[145]: True
- In [146]: 1>1
- Out[146]: False
- In [147]: 2>1
- Out[147]: True
- In [149]: 1>=1
- Out[149]: True
- In [150]: 2>=1
- Out[150]: True
- Out[151]: False
- In [152]: 6<7
- Out[152]: True
- In [153]: 6<=6
- Out[153]: True
- In [154]: 6<=7
- Out[154]: True
- In [156]: True and False
- Out[156]: False
- In [157]: True and True
- Out[157]: True
- In [158]: False and False
- Out[158]: False
- In [159]: True or True
- Out[159]: True
- In [160]: True or False
- Out[160]: True
- In [161]: False and False
- Out[161]: False
- In [162]: not True
- Out[162]: False
- In [163]: not False
- Out[163]: True
- In [167]: a=b=3
- In [168]: a is b
- Out[168]: True
- In [169]: a=3
- In [170]: b=5
- In [171]: a is b
- Out[171]: False
- In [177]: a=3
- In [178]: b=5
- In [179]: a is not b
- Out[179]: True
- In [180]: a = 600
- In [181]: b = 600
- In [182]: a == b
- Out[182]: True
- In [183]: a is b
- Out[183]: False
- In [184]: id(a)
- Out[184]: 2155434581648
- In [185]: id(b)
- Out[185]: 2155434581904
- In [187]: a = 10
- In [188]: b = 10
- In [189]: a == b
- Out[189]: True
- In [190]: a is b
- Out[190]: True
- In [191]: id(a)
- Out[191]: 1529742064
- In [192]: id(b)
- Out[192]: 1529742064
- In [193]: a = 15 # 15 = 0000 1111
- In [194]: b = 30 # 30 = 0001 1110
- In [195]: c = a&b # 14 = 0000 1110
- In [196]: c
- Out[196]: 14
- In [193]: a = 15 # 15 = 0000 1111
- In [194]: b = 30 # 30 = 0001 1110
- In [197]: c = a|b # 31 = 0001 1111
- In [198]: c
- Out[198]: 31
- In [193]: a = 15 # 15 = 0000 1111
- In [194]: b = 30 # 30 = 0001 1110
- In [200]: c = a^b # 17 = 0001 0001
- In [201]: c
- Out[201]: 17
- In [210]: a = 60 # 60 = 0011 1100
- In [211]: c = ~a # -61 = 1100 0011
- In [212]: c
- Out[212]: -61
- In [213]: a = 15 # 15 = 0000 1111
- In [214]: c = a<<2 # 60 = 0011 1100
- In [215]: c
- Out[215]: 60
- # 左移后面要加位数
- In [213]: a = 15 # 15 = 0000 1111
- In [218]: c = a>>2 # 3 = 0000 0011
- In [219]: c
- Out[219]: 3
- # 右移后面要加位数
来源: https://www.cnblogs.com/minutesheep/p/10315244.html