列表

一、append( )方法

原地修改列表对象,是真正的列表尾部添加新的元素,速度最快,推荐使用

1
2
3
4
>>> a = [20, 40]
>>> a append(80)
>>> a
[20, 40, 80]

二、加法运算符

并不是真正的尾部添加元素,而是创建新的列表对象;将原列表的元素和新列表的元素依次复制到新的列表对象中。这样,会涉及大的复制操作,对于操作大量元素不建议使用。

1
2
3
4
5
6
>>> a = [20, 40]
>>> id(a)
28484854784
>>> a=a+[50]
>>> id(a)
28481420352

通过如上测试,我们发现变量a的地址发生了变化。也就是创建了新的列表对象。

三、extend( )方法

将目标列表的所有元素添加到本列表的尾部,属于原地操作,不创建新的列表对象

1
2
3
4
5
6
>>> a = [20, 40]
>>> id(a)
28485031424
>>> a.extend([50, 60])
>>> id(a)
28485031424

四、insert( )插入元素

使用 insert( )方法可以将指定的元素插入到列表对象的任意制定位置,这样会让插入位置后面所有的元素进行移动,会影响处理速度。涉及大量元素时,尽量进免使用,类似发生这种移动的函数还有:remove(),pop(),del()remove( ),pop( ),del( ),它们在删除非尾部元素时也会发生操作位置后面元素的移动

1
2
3
4
>>> a = [10, 20, 30]
>>> a.insert(2, 100)
>>> a
[10, 20, 100, 30]

五、列表元素的删除

deldel 删除

删除列表指定位置的元素

1
2
3
4
>>> a = [10, 20, 30]
>>> del a[1]
>>> a
[10, 30]

poppop方法

poppop删除并返回指定位置元素,如果未指定位置则默认操作列表最后一个元素

1
2
3
4
5
>>> a=[10, 20, 30, 40, 50]
>>> a.pop()
50
>>> a
[10, 30, 40]

removeremove方法

删除首次出现的指定元素,若不存在该元素抛出异常。

1
2
3
4
5
6
7
8
>>> a = [10, 20, 30, 40, 50, 20, 30, 20, 30]
>>> a.remove(20)
>>> [10, 30, 40, 50, 20, 30, 20, 30]
>>> a.remove(100)
Traceback (most recent call last):
File "<pyshell#11>", line 1, in <module>
a.remove(100)
ValueError: list.remove(x): x not in list

六、列表元素访问和计数

通过索引直接访问函数

我们可以通过索引直接访问元素,索引的区间在[0,[0, 列表长度−1]-1]这个范围,超过这个范围则会抛出异常。

1
2
3
4
5
6
7
8
>>> a = [10, 20, 30, 40, 50, 20, 30, 20, 30]
>>> a[2]
30
>>> a[10]
Traceback (most recent call last):
File "<pyshell#13>", line 1, in <module>
a[10]
IndexError: list index out of range

index获得指定元素在列表中首次出现的索引

index( )可以获取指定元素首次出现的素引位置法是 : index(value, [start, [end]])。其中, start和end指定了搜索的范围。

1
2
3
4
5
6
7
>>> a = [10, 20, 30, 40, 50, 20, 30, 20, 30]
>>> a.index(20)
1
>>> a.index(20, 3)
5
>>> a.index(30, 5, 7)
6

count获得指定元素在列表中出现的次数

1
2
3
>>> a = [10, 20, 30, 40, 50, 20, 30, 20, 30]
>>> a.count(30)
3

len返回列表长度

1
2
3
>>> a = [10, 20, 30, 40, 50, 20, 30, 20, 30]
>>> len(a)
9

七、列表的排序

修改原列表,不建新列表的排序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
>>> a = [20, 10, 30, 40]
>>> id(a)
28484961920
>>> a.sort()
>>> a
[10, 20, 30, 40]
>>> a = [10, 20, 30, 40]
>>> a.sort(reverse = True)
>>> a
[40, 30, 20, 10]
>>> import random
>>> random.shuffle(a)
>>> a
[30, 40, 10, 20]

八、多维列表

一维列表可以帮助我们存储一维、线性的数据,

二维列表可以帮助我们存储二维、表格的数据。

1
2
3
4
5
a = [
["pye", 13, "xzzx"]
["pyx", 15, "xjzx"]
["gzm", 13, "whzx"]
]