Python序列-列表
SUMUP
序列是一种数据存储方式,用来存储一系列的数据。
在内存中,序列就是一块用来存放多个值的连续的内存空间(id依次存储在连续对象中(e.g. a[0]存储10的地址),而不是每个对象,连续对象的地址再赋给a)
**常用的序列结构有:**字符串,列表,元组,字典,集合
列表
用于存储任意数目、任意类型的数据集合
Python列表大小可变,根据需要随时增加或缩小
创建列表
- []
- list():可将任何可迭代的数据转化成列表
>>> range(5)
range(0, 5)
>>> list(range(5))
[0, 1, 2, 3, 4]
>>> list("string")
['s', 't', 'r', 'i', 'n', 'g']
- range([start,] end [,step])
- 推导生成(使用控制语句)
>>> [x*2 for x in range(5)]
[0, 2, 4, 6, 8]
>>> [x*2 for x in range(5) if x%3==0]
[0, 6]
列表元素的增加和删除
增删元素时,列表会自动进行内存管理
但涉及列表元素大量移动,效率较低,一般只在列表尾部进行添加删除操作
增加
- append():添加元素到尾部,速度最快(基于原来对象添加)
- +:不是真正尾部添加元素,而是创建新的列表对象,将内容复制到新列表中
- extend():添加列表到尾部,不创建新对象
- insert():元素插入到对应位置,涉及元素复制,类似发生这种移动的函数还有:remove()、pop()、del()
- 乘法扩展
删除
- del:涉及元素复制移动
- pop():删除并返回指定位置元素,默认删除尾部元素
- remove():删除首次出现的指定元素
列表元素访问和计数
- 索引
- index(value, [start,[end]]):获得指定元素在列表中首次出现的索引
- count():获得指定元素在列表中出现的次数
- len():返回列表长度
- 资格判断:判断列表中是否存在指定的元素,我们可以使用count()方法,返回0 则表示不存在,返回大于0 则表示存在。但是,一般我们会使用更加简洁的in 关键字来判断,直接返回True或False
切片
[起始偏移量start:终止偏移量end[:步长step]]
包头不包尾
起始为0,结尾为-1(len-1)
列表的遍历
循环遍历
列表排序
修改原列表
sort(),默认reverse=False
shuffle()
创建新列表
sorted()
reversed():返回迭代器(只能用一次),可通过list()转逆序列表
列表其他内置函数
- max()
- min()
- sum()
多维列表
内存结构图