计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值。但是,计算机能处理的远不止数值,还可以处理文本、图形、音频、视频、网页等各种各样的数据,不同的数据,需要定义不同的数据类型。在Python中,能够直接处理的数据类型有以下几种:数值型、字符串型、列表型、元组型、字典型。
数值类型
顾名思义就是数字类型,但数字类型内部又分为:整型、浮点型、长整型、复数型
整数类型
整数类型的范围是2**32,其中包含正数和负数(2的31次方个正和2的31次方的个负数,所以它的范围是-2147483648 ——— 214748364。
PS:查看一个数据的类型使用type(数据)方法
In [1]: a=1 In [2]: type(a) Out[2]: int # int表示为整型 In [18]: type(2/1) Out[18]: int
浮点型
浮点类型就是带小数点的,多余的位数会被四舍五入。
整数和浮点数在计算机内部存储的方式是不同的,整数运算永远是精确的(除法难道也是精确的?是的!),而浮点数运算则可能会有四舍五入的误差。
In [3]: a=1.23 In [4]: type(a) Out[4]: float # float表示的是浮点数 In [19]: type(2.0/1) Out[19]: float
长整型
用l或L表示,当我们赋值的时候使用l可以把变量赋值为长整型,注意在Python3中已经取消了长整型这个格式。
In [11]: a=1299999999999999999999999999999999999999999 In [12]: type(a) Out[12]: long #long表示长整型 In [13]: a Out[13]: 1299999999999999999999999999999999999999999L In [15]: a=123l In [16]: type(a) Out[16]: long #只有python2.x中有长整型的概念,python3.x只有整型
复数型
用j表示,当我们赋值的时候使用j可以把变量赋值为复数型,python对复数提供内嵌支持。(其他大部分软件没有)
复数一般用于科学计算,我们日常一般不会使用,这里知道即可。
In [20]: type(123j) Out[20]: complex # 表示复数类型
字符串类型
字符串是以单引号
'或双引号"括起来的任意文本,比如'abc',"xyz"等等。请注意,''或""本身只是一种表示方式,不是字符串的一部分,因此,字符串'abc'只有a,b,c这3个字符。如果'本身也是一个字符,那就可以用""括起来,比如"I'm OK"包含的字符是I,',m,空格,O,K这6个字符。有三种方法定义字符串:单引号,双引号,三引号。str='this is string' str="this is string" str='''this is string''' #也可以是三个双引号,三个引号可以多行注释但是不能单双混合
其中三重引号除了能定义字符串以外,还可以表示注释。
字符串的基本操作
字符串是一个序列,可以通过索引和切片去操作
索引
类似数组的下标:
In [3]: a='1234567' In [4]: a[0] -->#下标从0开始,0表示第一个数 Out[4]: '1' In [5]: a[3] -->#表示第四个数 Out[5]: '4'
切片
类似shell变量的截取:
1 In [14]: a='abcd' 2 In [15]: a[0:2] 3 Out[15]: 'ab' 4 #从第0个开始截取2个字符,其中0可以省略 5 6 7 In [14]: a='abcd' 8 In [16]: a[:-1] 9 Out[16]: 'abc' 10 #默认是从左往右(前往后),带减号,表示从右往左(后往前),-1表示最后一个字符(a='abcd',-1的值是d,也就是3,顾a[:-1],就等于a[0:3]) 11 12 13 In [14]: a='abcd' 14 In [17]: a[1:] 15 Out[17]: 'bcd' 16 #从1开始截取到最后 17 18 19 In [14]: a='abcd' 20 In [20]: a[::2] 21 Out[20]: 'aceg' 22 #步长为2,表示从0开始步长为2,(取0,2,4,6) 23 24 25 In [26]: a 26 Out[26]: 'abcdefg' 27 In [27]: a[-5:-1] 28 Out[27]: 'cdef' 29 #表示倒着取,从倒数第五个取到倒数第一个(不包含倒数第一,要想取可以使用a[-5:]) 30 31 32 In [29]: a 33 Out[29]: 'abcdefg' 34 In [30]: a[0:5:1] 35 Out[30]: 'abcde' 36 In [31]: a[0:5:2] 37 Out[31]: 'ace' 38 #从0开始取到第5个,步长为1,步长为2 39 40 41 In [32]: a 42 Out[32]: 'abcdefg' 43 In [34]: a[-1::-1] 44 Out[34]: 'gfedcba' 45 #从后往前取,步长为-1,表示每次倒着取1个,由于没有指定结尾,默认到最后,所以就把数字逆了过来。 46 47 48 In [36]: a 49 Out[36]: 'abcdefg' 50 In [38]: a[::2][:2] 51 Out[38]: 'ac' 52 #表示先每隔2个取出来,然后从头开始取2个。