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)