列表方法使得列表可以很方便地作为一个堆栈来使用,堆栈作为特定的数据结构,最先进入的元素最后一个被释放(后进先出)。用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
[3, 4, 5]
>>> stack.pop()
5
>>> stack
[3, 4]
当然你也可以把列表当作队列使用,队列作为特定的数据结构,最先进去的元素最先释放(先进先出)。不过,列表这样用效率不高。相对来说从列表末尾添加和弹出很快;在头部插入和弹出很慢(因为为了一个元素,要移动整个列表中的所有元素)。
列表要实现队列,使用collections.deque,它为在首尾两端快速插入和删除而设计。例如:
>>> from collections import deque
>>> queue = deque(["Eric","John","Michael"])
>>> queue.append("Terry")
>>> queue.append("Graham")
>>> queue.popleft()
'Eric'
>>> queue.popleft()
'John'
>>> queue
deque(['Michael', 'Terry', 'Graham'])
collections是Python的一个容器数据类型模块,deque是类似列表(list)的容器,实现了在两端快速添加(append)和弹出(pop)
Python 3.9.7 Documentation文档中对deque定义为
class collections.deque([iterable[, maxlen]])
返回一个新的双向队列对象,从左到右初始化(用方法 append()) ,从 iterable (迭代对象) 数据创建。如果 iterable 没有指定,新队列为空。
参考地址为https://docs.python.org/zh-cn/3/library/collections.html#collections.deque