列表和元祖都属于序列的一种,列表可以修改,元祖不能修改。序列里面可以再包含序列。
所有序列的通用操作
索引从0开始,表示从左边开始的第一个,也可以从-1开始,表示最右边的第一个。
>>> mylist = "201526"
>>> mylist[3]
'5'
>>> mylist[-3]
'5'
>>> mylist[-2]
'2'
分片
分片就是提供两个索引做为边界,第一个索引的元素是包含在分片内的第二个是不包含在内的,也就是前闭后开,中间以冒号分隔
mylist[0:-1]
'20152'
更大的步长
步长就是在分片的基础上面再在后面加个步长,用冒号分开
>>> mylist[0:-1:2]
'212'
序列相加
序列相加,使用加运算符即可实现。
>>> mylist + "2334"
'2015262334'
>>> mylist + [1,2,3]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: cannot concatenate 'str' and 'list' objects
序列相加必须是同种类型的序列
序列乘法
序列乘法就是用一个序列乘以数字x,原来的序列被重复x次
mylist*5
'201526201526201526201526201526'
None
None类比C或者C++的NULL,可以做为初始化时使用
>>> mylist=[None,None,None]
>>> mylist
[None, None, None]
成员资格
检查一个值是否在序列中,可以使用in运算符,返回值类型为布尔。
>>> None in mylist
True
>>> 1 in mylist
False
长度,最小值,最大值
len返回序列中包含的元素数量,min 和max返回序列中最大和最小元素
>>> mylist=[1,2,3]
>>> max(mylist)
3
>>> min(mylist)
1
>>> len(mylist)
3
列表
列表的各个元素通过逗号分隔,然后写在方括号里面。
list函数
字符串是个常亮,字符串本身不可以修改,但是通过字符串创建列表之后就可以修改了,
list函数就可以实现这个功能,类比构造函数吧
>>> mylist=list("hello,world")
>>> mylist
['h', 'e', 'l', 'l', 'o', ',', 'w', 'o', 'r', 'l', 'd']
列表基本操作
元素赋值
使用列表名加上对应下标即可
>>> mylist[0]='H'
>>> mylist
['H', 'e', 'l', 'l', 'o', ',', 'w', 'o', 'r', 'l', 'd']
删除元素
del语句即可,格式为del 列表名[下标]
>>> del mylist[0]
>>> mylist
['e', 'l', 'l', 'o', ',', 'w', 'o', 'r', 'l', 'd']
分片赋值
使用序列分片的通用格式,然后赋值即可
>>> mylist[1:3] = "Ne"
>>> mylist
['e', 'N', 'e', 'o', ',', 'w', 'o', 'r', 'l', 'd']
小技巧
>>> mylist[0:0]="ADD"
>>> mylist
['A', 'D', 'D', 'e', 'N', 'e', 'o', ',', 'w', 'o', 'r', 'l', 'd']
这样就可以等同于两个列表相加了,
那么删除则可以通过赋空值来实现
>>> mylist[0:3]=[]
>>> mylist
['e', 'N', 'e', 'o', ',', 'w', 'o', 'r', 'l', 'd']
列表方法:
append 在列表的末尾添加新对象,可以是单个元素,也可以是一个列表。(序列里面可以再包含序列)
count 统计某个元素在列表里面出现的次数
extend 一次性追加另一个序列中的多个值
append和extend的区别如下:
>>> mylist.append(1)
>>> mylist
['e', 'N', 'e', 'o', ',', 'w', 'o', 'r', 'l', 'd', 1]
>>> mylist.append(1,2)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: append() takes exactly one argument (2 given)
>>> mylist.append([1,2])
>>> mylist
['e', 'N', 'e', 'o', ',', 'w', 'o', 'r', 'l', 'd', 1, [1, 2]]
>>> mylist.extend([1,2])
>>> mylist
['e', 'N', 'e', 'o', ',', 'w', 'o', 'r', 'l', 'd', 1, [1, 2], 1, 2]
index 用于获取列表某个值第一次出现的位置
insert 用于将对象插入到指定位置,insert没有那种类似extend的功能。
>>> mylist
[1, 2, 3]
>>> mylist.insert(2,"abcd")
>>> mylist
[1, 2, 'abcd', 3]
>>> mylist.insert(2,[9,8,7])
>>> mylist
[1, 2, [9, 8, 7], 'abcd', 3]
pop 移除列表最后一个元素
remove 移除列表里面第一个匹配的值。
reverse 列表元素反向存放
sort 对列表排序,注意的是内存已经修改,不是返回副本;sort可以使用自定义比较函数,
使用方式 列表名.sort(函数名) 跟STL的容器一样
元组
元祖是不可变序列
表示形式为:元素之间用逗号分开,用圆括号括起来。
>>> mylist=(1,)
>>> mylist
(1,)
>>> mylist=(2,)
>>> mylist[0]=3
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
tuple函数功能与list相同,把一个序列转换为元祖,如果序列是元祖,那么就原样返回,如果是列表,就转换格式。
>>> mylist=tuple((1,2,3,))
>>> mylist
(1, 2, 3)
>>> mylist=tuple([1,2,3,])
>>> mylist
(1, 2, 3)
>>> mylist=tuple([1,2,3])
>>> mylist
(1, 2, 3)
元祖存在的意义:
可以做为字典的key;可以做为函数的返回值