一.数值类型
1.int 整数
2.float 浮点数(小数)--不精确
3.decimal 精确的小数
4.Bool 布尔值(True--正确,False--错误)
5.complex 复数 ai+bj
运算:正常的 + - * /
%:取余 // 保留整数部分 ** 次方
二.序列类型
01 字符串string(不可变) 'abc'
02 列表list(可变) mylist = ['18','hello','哈哈','250']
03 元组tuple(不可变) a = ('hello',18,19,'hahaha')
索引取值(索引位置从0开始):
eg:
In [25]: mylist = ['18','hello','哈哈','250']
In [26]: mylist[2]
Out[26]: '哈哈
切片:左闭又开(左边的值可以取到,右边的值取不到)
(1)正切:如:存在一个序列类型:a = 'abcdefg' 想要取出‘cde’,切片为[2:5](数字为索引位置)
(2)省略某个值,eg:[:] ,[:5],[5:]
(3)反向取值
(4)隔着取,即加步长
eg:隔两个取值 c[0::2]
序列类型相互转换:
元组-->列表
In [27]: a =('hello',18,19,'hahaha')
In [28]: alist = list(a)
In [29]: alist
Out[29]: ['hello', 18, 19, 'hahaha']
列表-->元组
In[29]: alist = ['hello', 18, 19, 'hahaha']
In [30]: btuple = tuple(alist)
In [31]: btuple
Out[31]: ('hello', 18, 19, 'hahaha')
字符串-->列表
In [32]: b = '今天天气真好'
In [33]: blist = list(b)
In [34]: blist
Out[34]: ['今', '天', '天', '气', '真', '好']
字符串和元组不可变,但是非要改变呢?
元组:
In [36]: a = ('hello', 18, 19, 'hahaha')
In [37]: a[1:]
Out[37]: (18, 19, 'hahaha')
In [38]: a = a[1:]
In [39]: a
Out[39]: (18, 19, 'hahaha')
但这其实不是真正的改变,相当于给a元组重新进行了赋值而已
In [52]: a = (18,19,'hahaha')
In [53]: a
Out[53]: (18, 19, 'hahaha')
In [54]: id(a)
Out[54]: 139750971651200
In [55]: a = a[1:]
In [56]: a
Out[56]: (19, 'hahaha')
In [57]: id(a)
Out[57]: 139750951565832
元组的id值改变,说明前后不是一个元组,即元组不可变
列表可变证明:
In [40]: mylist
Out[40]: ['18', 'hello', '哈哈', '250']
In [41]: id(mylist)
Out[41]: 139750951457800
In [43]: mylist[2] = '888'
In [44]: mylist
Out[44]: ['18', 'hello', '888', '250']
In [45]: id(mylist)
Out[45]: 139750951457800
以上可以看到列表可变,所以它的id没有变化,表明是同一个列表
练习:通过不同的方法取出列表里的元素?
In [8]: mylist = [1,2,3,4,5]
In [9]: mylist[4]
Out[9]: 5
In [10]: mylist[-1]
Out[10]: 5
In [11]: mylist[4:]
Out[11]: [5] #这只是取出了一个列表,不是元素
In [12]: type(mylist[4])
Out[12]: int
In [13]: type(mylist[4:])
Out[13]: list
In [14]: mylist[-1:]
Out[14]: [5]
In [15]: mylist[-1:][0] #取出来的[5]是一个列表,再采取列表的索引操作,即可取出元素
Out[15]: 5