1.1. 关于列表更多的内容
Python 的列表数据类型包含的方法。这里是所有的列表对象方法:
list.
append
(x)
把一个元素添加到列表的结尾,相当于 a[len(a):] = [x]
。
list.
extend
(L)
将一个给定列表中的所有元素都添加到另一个列表中,相当于 a[len(a):] = L
。
list.
insert
(i, x)
在指定位置插入一个元素。第一个参数是准备插入到其前面的那个元素的索引,例如 a.insert(0, x)
会插入到整个列表之前,而 a.insert(len(a), x)
相当于 a.append(x),插入列表末尾
。
list.
remove
(x)
删除列表中值为 x 的第一个元素。如果没有这样的元素,就会返回一个错误。
list.
pop
([i])
从列表的指定位置删除元素,并将其返回。如果没有指定索引,a.pop()
返回最后一个元素。元素随即从列表中被删除(方法中 i 两边的方括号表示这个参数是可选的,而不是要求你输入一对方括号,你会经常在Python 库参考手册中遇到这样的标记)。
list.
clear
()
从列表中删除所有元素。相当于 del a[:]
。
list.
index
(x)
返回列表中第一个值为 x 的元素的索引(以索引取列表值,index翻译就是索引的意思)。如果没有匹配的元素就会返回一个错误。
list.
count
(x)
返回 x 在列表中出现的次数。
list.
sort
()
对列表中的元素就地进行排序,reverse = True 降序, reverse = False 升序(默认)。
list.
reverse
()
就地倒排序列表中的元素。
list.
copy
()
返回列表的一个浅拷贝。等同于 a[:]
。
下面这个示例演示了列表的大部分方法:
>>> a = [66.25, 333, 333, 1, 1234.5]
>>> print(a.count(333), a.count(66.25), a.count('x'))
2 1 0
>>> a.insert(2, -1)
>>> a.append(333)
>>> a
[66.25, 333, -1, 333, 1, 1234.5, 333]
>>> a.index(333)
1
>>> a.remove(333)
>>> a
[66.25, -1, 333, 1, 1234.5, 333]
>>> a.reverse()
>>> a
[333, 1234.5, 1, 333, -1, 66.25]
>>> a.sort()
>>> a
[-1, 1, 66.25, 333, 333, 1234.5]
>>> a.pop()
1234.5
>>> a
[-1, 1, 66.25, 333, 333]
也许大家会发现像 insert
, remove
或者 sort
这些修改列表的方法没有打印返回值–它们返回 None
。 在 python 中对所有可变的数据类型这是统一的设计原则。
1.1.1. 把列表当作堆栈使用
列表方法使得列表可以很方便的做为一个堆栈来使用,堆栈作为特定的数据结构,最先进入的元素最后一个被释放(后进先出)。用 append()
方法可以把一个元素添加到堆栈顶。用不指定索引的 pop()
方法可以把一个元素从堆栈顶释放出来。例如:
>>> stack = [3, 4, 5]
>>> stack.append(6)
>>> stack.append(7)
>>> stack
[3, 4, 5, 6, 7]
>>> stack.pop()
7
>>> stack
[3, 4, 5, 6]
>>> stack.pop()
6
>>> stack.pop()
5
>>> stack
[3, 4]
1.1.2. 把列表当作队列使用
你也可以把列表当做队列使用,队列作为特定的数据结构,最先进入的元素最先释放(先进先出)。不过,列表这样用效率不高。相对来说从列表末尾添加和弹出很快;在头部插入和弹出很慢(因为,为了一个元素,要移动整个列表中的所有元素)。
要实现队列,使用 collections.deque,它为在首尾两端快速插入和删除而设计。例如:
>>> from collections import deque
>>> queue = deque(["Eric", "John", "Michael"])
>>> queue.append("Terry") # Terry arrives
>>> queue.append("Graham") # Graham arrives
>>> queue.popleft() # The first to arrive now leaves
'Eric'
>>> queue.popleft() # The second to arrive now leaves
'John'
>>> queue # Remaining queue in order of arrival
deque(['Michael', 'Terry', 'Graham'])
1.1.3. 列表推导式
列表推导式为从序列中创建列表提供了一个简单的方法。普通的应用程式通过将一些操作应用于序列的每个成员并通过返回的元素创建列表,或者通过满足特定条件的元素创建子序列。
例如, 假设我们创建