共计 1470 个字符,预计需要花费 4 分钟才能阅读完成。
把列表当作堆栈应用
列表办法使得列表能够很不便的做为一个堆栈来应用,堆栈作为特定的数据结构,最先进入的元素最初一个被开释(后进先出)。用 append() 办法能够把一个元素增加到堆栈顶。用不指定索引的 pop() 办法能够把一个元素从堆栈顶释放出来。例如:《Python 办公自动化让工作更轻松 》
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]
5.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’])
5.1.3. 列表推导式
列表推导式为从序列中创立列表提供了一个简略的办法。一般的应用程式通过将一些操作利用于序列的每个成员并通过返回的元素创立列表,或者通过满足特定条件的元素创立子序列。
例如, 假如咱们创立一个 squares 列表, 能够像上面形式:
squares = []
for x in range(10):
… squares.append(x**2)
…
squares
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
留神这个 for 循环中的被创立 (或被重写) 的名为 x 的变量在循环结束后仍然存在。应用如下办法,咱们能够计算 squares 的值而不会产生任何的副作用:
squares = list(map(lambda x: x**2, range(10)))
或者,等价于:
squares = [x**2 for x in range(10)]
下面这个办法更加扼要且易读.
列表推导式由蕴含一个表达式的括号组成,表达式前面追随一个 for 子句,之后能够有零或多个 for 或 if 子句。后果是一个列表,由表达式根据其前面的 for 和 if 子句上下文计算而来的后果形成。
例如,如下的列表推导式联合两个列表的元素,如果元素之间不相等的话:
[(x, y) for x in [1,2,3] for y in [3,1,4] if x != y]
[(1, 3), (1, 4), (2, 3), (2, 1), (2, 4), (3, 1), (3, 4)]
等同于:combs = []
for x in [1,2,3]:
… for y in [3,1,4]:
… if x != y:
… combs.append((x, y))
…
combs
[(1, 3), (1, 4), (2, 3), (2, 1), (2, 4), (3, 1), (3, 4)]
值得注意的是在下面两个办法中的 for 和 if 语句的程序。