Python的数据类型
计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值。但是,计算机能处理的远不止数值,还可以处理文本、图形、音频、视频、网页等各种各样的数据,不同的数据,需要定义不同的数据类型。在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变量的截取:
In [14]: a='abcd'
In [15]: a[0:2]
Out[15]: 'ab'
#从第0个开始截取2个字符,其中0可以省略
In [14]: a='abcd'
In [16]: a[:-1]
Out[16]: 'abc'
#默认是从左往右(前往后),带减号,表示从右往左(后往前),-1表示最后一个字符(a='abcd',-1的值是d,也就是3,顾a[:-1],就等于a[0:3])
In [14]: a='abcd'
In [17]: a[1:]
Out[17]: 'bcd'
#从1开始截取到最后
In [14]: a='abcd'
In [20]: a[::2]
Out[20]: 'aceg'
#步长为2,表示从0开始步长为2,(取0,2,4,6)
In [26]: a
Out[26]: 'abcdefg'
In [27]: a[-5:-1]
Out[27]: 'cdef'
#表示倒着取,从倒数第五个取到倒数第一个(不包含倒数第一,要想取可以使用a[-5:])
In [29]: a
Out[29]: 'abcdefg'
In [30]: a[0:5:1]
Out[30]: 'abcde'
In [31]: a[0:5:2]
Out[31]: 'ace'
#从0开始取到第5个,步长为1,步长为2
In [32]: a
Out[32]: 'abcdefg'
In [34]: a[-1::-1]
Out[34]: 'gfedcba'
#从后往前取,步长为-1,表示每次倒着取1个,由于没有指定结尾,默认到最后,所以就把数字逆了过来。
In [36]: a
Out[36]: 'abcdefg'
In [38]: a[::2][:2]