Python的数值类型
在python中,数字并不是一个真正的对象类型,而是一组类似类型的分类。这些主要包括整数,浮点数,布尔类型和复数。这些是相对来说比较常用的,复数一般都用在比较精密的科学计算中,还是主要看你的工作方向。当然除了以上四类还有一些其他细分的类型,如有理分数,固定精度的十进制数等。
整数
在python中整数常用的运算包括,加减乘除,乘方等。在python3.0之后一般整数与长整数已经合二为一。
In [17]: 3+4 #加
Out[17]: 7
In [18]: 5*9 #乘
Out[18]: 45
In [19]: 98-45 #减
Out[19]: 53
In [20]: 99/3 #除
Out[20]: 33.0
In [21]: 2**4 #乘方
Out[21]: 16
除此之外就是一些混合运算。这些运算往往有次序。
1 In [22]: 3*4+6
2 Out[22]: 18
3
4 In [23]: 3*(4+6)
5 Out[23]: 30
浮点数
在python中把带小数点的数字都称为浮点数。
1 In [26]: 3.2+4.6
2 Out[26]: 7.8
3
4 In [27]: 2*0.3
5 Out[27]: 0.6
另外有些时候会出现精度问题,这个问题的原因是硬件的限制。
1 In [28]: 0.2+0.1
2 Out[28]: 0.30000000000000004
布尔类型
想想这个问题,bool类型本来是一个数字,可是这个数字却有两个值,True和False(注意首字母必须为大写),两个值也分别代表1和0。
1 In [30]: type(True)
2 Out[30]: bool
3
4 In [31]: True==1
5 Out[31]: True
6
7 In [32]: True+1
8 Out[32]: 2
9
10 In [33]: True or False
11 Out[33]: True
复数
复数表示为两个浮点数,并在虚部增加 j 或 J 的后缀。
1 In [34]: (3+2j)+3
2 Out[34]: (6+2j)
3
4 In [35]: 1j*1j
5 Out[35]: (-1+0j)
python的序列类型
python中的序列类型包括列表,字符串,元组等。
字符串
字符串在python可以用len()来求长度,字符串的索引下标从0开始,从左至右依次类推。
1 In [36]: s='python'
2
3 In [37]: len(s)
4 Out[37]: 6
5
6 In [38]: s[0]
7 Out[38]: 'p'
8
9 In [39]: s[5]
10 Out[39]: 'n'
在python中除了正向索引还可以反向索引。即从最右边开始计算。
1 In [40]: s='python'
2
3 In [41]: s[-1]
4 Out[41]: 'n'
5
6 In [42]: s[-2]
7 Out[42]: 'o'
8
9 In [43]: s[len(s)-1]
10 Out[43]: 'n'
切片
切片的原则是取前不取后,左闭右开的原则,其标准形式为 [start:stop:step]。
1 In [48]: s='python'
2
3 In [49]: s[0:4]
4 Out[49]: 'pyth'
5
6 In [50]: s[:4]
7 Out[50]: 'pyth'
8
9 In [51]: s[:]
10 Out[51]: 'python'
11
12 In [52]: s[3:]
13 Out[52]: 'hon'
14
15 In [53]: s[0:6:2]
16 Out[53]: 'pto'
列表
列表是一个任意类型的对象的位置相关的有序集合。其大小是可变的。列表同样可以进行索引和切片的操作。
1 In [54]: l=[123,'python',456,'hello']
2
3 In [55]: len(l)
4 Out[55]: 4
5
6 In [56]: l[2]
7 Out[56]: 456
8
9 In [57]: l[:2]
10 Out[57]: [123, 'python']
11
12 In [58]: l+[7,8,9]
13 Out[58]: [123, 'python', 456, 'hello', 7, 8, 9]
14
15 In [59]: l
16 Out[59]: [123, 'python', 456, 'hello']
列表还有一些特定的操作,列表的增加和减少。
1 In [60]: l=[123,'python',456,'hello']
2
3 In [61]: l.append('789')
4
5 In [62]: l
6 Out[62]: [123, 'python', 456, 'hello', '789']
7
8 In [63]: l.pop(2)
9 Out[63]: 456
10
11 In [64]: l
12 Out[64]: [123, 'python', 'hello', '789']
列表的排序sort(),反转reverse()。
1 In [65]: l=['aaa','sss','ddd']
2
3 In [66]: l
4 Out[66]: ['aaa', 'sss', 'ddd']
5
6 In [67]: l.sort()
7
8 In [68]: l
9 Out[68]: ['aaa', 'ddd', 'sss']
10
11 In [69]: l.reverse()
12
13 In [70]: l
14 Out[70]: ['sss', 'ddd', 'aaa']
元组
元组对象tuple,就像一个不可改变的列表。
1 In [76]: t=(1,2,3,4)
2
3 In [77]: len(t)
4 Out[77]: 4
5
6 In [78]: t[3]
7 Out[78]: 4
8
9 In [79]: t+(6,7)
10 Out[79]: (1, 2, 3, 4, 6, 7)
11
12 In [80]: t.index(2)
13 Out[80]: 1
14
15 In [81]: t.count(3)
16 Out[81]: 1
拆包
1 In [86]: li=[1,3,5]
2
3 In [87]: x,y,z=li
4
5 In [88]: x
6 Out[88]: 1
7
8 In [89]: y
9 Out[89]: 3
10
11 In [90]: z
12 Out[90]: 5
1 In [91]: li=[1,3,5]
2
3 In [92]: x,*y=li
4
5 In [93]: x
6 Out[93]: 1
7
8 In [94]: y
9 Out[94]: [3, 5]
1 In [95]: li=[1,3,5]
2
3 In [96]: x,y=li
4 ---------------------------------------------------------------------------
5 ValueError Traceback (most recent call last)
6 <ipython-input-96-cdbda8c19b71> in <module>()
7 ----> 1 x,y=li
8
9 ValueError: too many values to unpack (expected 2)