一、创建列表:
(1)直接创建;a = []
(2) 列表推导
(3)赋值:
创建时赋值:a = [1, 2, 3]
元素赋值:a[0] = 1
(4)引用
listb = lista
(5)list()
list()可将元组、字符串转换为列表
二、基础操作
加:
>>> a = [1,2]
>>> b = [3, 4]
>>> a+b
[1, 2, 3, 4] #效率低于extend
乘
>>> a*3
[1, 2, 1, 2, 1, 2]
三、列表推导
通过一个列表而生成一个新列表时,可以使用列表推到。
好处:列表推导不会导致变量泄露的问题
(1)如,普通列表:codes = [ord(x) for x in symbols]
(2)如,笛卡尔积:thirts = [(color, size) for color in colors for size in sizes ]
(3)如,生成器,笛卡尔积:for thirts in ((color, size)for color in colors for size in sizes):
当需要大量数据时,生成器比方式(2)更节省内存
四、内建函数
list.append(object) | 末尾添加元素 | |
list.insert(index, object) | 在index后面,插入值 | |
del list[index] | 删除元素 | |
list.pop(index) | 弹出元素 | 在列表中弹出该元素,并返回该 元素,index不填则弹出栈顶元素 |
list.remove(value) | 删除值元素(第一个匹配项) | 不知道位置,只知道值的情况适用 |
list.sort([reverse=True]) | 按字母,永久排序 | True倒序排序,默认False |
sorted(list,[reverse=True]) | 按字母,临时排序 | True倒序排序,默认False |
list.reverse() | 反向列表,永久 | |
reversed(list) | 返回反转的list的迭代子,临时排序 | 需要for循环取出 |
len(list) | 返回列表长度 | |
list.clear() | 清空列表 | |
list.copy() | 复制列表,返回复制的列表 | |
list.count('s') | 返回‘s’元素在列表中的个数 | |
list.extend(b) | 在列表末尾追加序列b | |
list.index('s') | 返回‘s’元素在列表中的第一个位置 | |
‘s’ in list | 判断‘s’ 是否在列表中,返回bool值 |
五、切片:
>>> a = [1, 2, 3, 4]
整个数组
>>> a[:]
[1, 2, 3, 4]
复制列表(而不是引用)
>>> b = a[:]
>>> b
[0, 2, 4, 6, 8]
插入新值
>>> a[1:1] = [2,3,4]
>>> a
[1, 2, 3, 4, 2, 3, 4]
删除元素
>>> a[1:4] = []
>>> a
[1, 2, 3, 4]
正向切片
>>> a[:2]
[1, 2]
反向切片
>>> a[:-2]
[1, 2]
带步长切片
>>> a = list(range(0 , 99))
>>> a[12::10]
[12, 22, 32, 42, 52, 62, 72, 82, 92]
取索引为12的数,并且每隔13个再取
倒序
>>> a[::-1]
[4, 3, 2, 1]
倒序切片
>>> a[::-2]
[4, 2]
值相等
>>> a[:]==a
True
内存地址不相等
>>> id(a[:])==id(a)
False
六、数字列表:
(1)创建数字列表:list(range(start,end))
>>> a = list(range(0, 10))
>>> a
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
(2)带步长的数字列表:
>>> a = list(range(0, 10, 2))
>>> a
[0, 2, 4, 6, 8]
(3)最大值,max(数字列表)
>>> max(a)
8
(4)最小值,min(数字列表)
>>> min(a)
0
(5)求和,sum(数字列表)
>>> sum(a)
20