List-列表
文档地址
1.1 内置函数
文档简单翻译
list.append(x)
列表末端增加元素 等于 a[len(a):] = [x]
list.extend(iterable)
将iterable的所有元素扩展到list后面. 等于 a[len(a):] = iterable
.
list.insert(i, x)
插入元素到指定位置. i即第一个参数是要插入元素的索引, 所以 a.insert(0
, x) 插入的是整个list的前部, 而 a.insert(len(a), x)
等同于 a.append(x)
.
list.remove(x)
移除第一个值为x的元素. 若不存在则报错.
list.pop([i])
移除给定位置的元素并返回该元素. 如果没有指定索引值i
,则a.pop
移除列表最末尾的元素并返回它
list.clear()
清空list. 等同于 del a[:]
.
list.index(x[, start[, end]])
返回第一个值为x的元素零值索引,若没有这个元素则raise 一个ValueError
start
end
是可选参数,将list切片在寻找x,返回的索引值是在list的索引值而不是切片后的。
list.count(x)
返回x出现的次数
list.sort(key=None, reverse=False)
排序 参数见 sorted()
list.reverse()
反转
list.copy()
返回一个list的浅复制. 等同于 a[:]
.
1.2 把list用成堆栈
>>> stack = [3, 4, 5]
>>> stack.append(6)
>>> stack.pop()
6
>>> stack.pop()
5
>>> stack
[3, 4]
1.3 把list用成队列
其实list也是可以,就是用 list.insert(0, x)
,但是这样效率就很低,pop
和append
效率是高的,但是insert
和从头部pop
的话,就很慢,因为其他的元素是一个一个移的。
>>> from collections import deque
>>> queue = deque(["Eric", "John", "Michael"])
>>> queue.popleft()
'Eric'
>>> queue.popleft() # The second to arrive now leaves
'John'
1.4 嵌套列表推到式
考察这样的一个3x4的矩阵:
>>> matrix = [
... [1, 2, 3, 4],
... [5, 6, 7, 8],
... [9, 10, 11, 12],
... ]
则以下列表推导式完成行列的转置操作:
>>> [[row[i] for row in matrix] for i in range(4)]
[[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]]
上面的推导式等价于:
>>> transposed = []
>>> for i in range(4):
... # the following 3 lines implement the nested listcomp
... transposed_row = []
... for row in matrix:
... transposed_row.append(row[i])
... transposed.append(transposed_row)
...
>>> transposed
[[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]]
内建函数 built-in functions
也能完成以上操作 zip()
:
>>> list(zip(*matrix))
[(1, 5, 9), (2, 6, 10), (3, 7, 11), (4, 8, 12)]
注:zip(*iterables)
对iterables
解绑,再合并归组
2.1 del
语句
>>> a = [-1, 1, 66.25, 333, 333, 1234.5]
>>> del a[0]
>>> a
[1, 66.25, 333, 333, 1234.5]
>>> del a[2:4]
>>> a
[1, 66.25, 1234.5]
>>> del a[:]
>>> a
[]
del
也能删整个列表
>>> del a