赞
踩
队列Queue是一种先进先出FIFO(first in first out)的排列方式,就和排队入场是一样的。
而双端队列deque 即队伍的头尾可以互换,两端既可以进也可以出。
在Python中常用的有两种实现队列的方法:
一、列表List方法
append():从右端进入
pop(0):从左端出(需要注意pop()默认是从右端出,这样就不符合FIFO了)
- s = ['a', 'b', 'c']
-
- s.append('d')
-
- s.pop(0)
-
- print(s)-------------->['b', 'c', 'd']
由于List的删除方式pop(0)需要后面所有元素向前补齐一位,算法效率较低。而第二种方法可以有效的避免这个问题。
二、调用deque方法
append():从右端进入
pop():从右端出
appendleft():从左端进入
popleft():从左端出
可以看出要满足FIFO条件,append()和popleft()通常一起使用(右进左出),appendleft()和pop()通常一起使用(左进右出)。
- from collections import deque
-
- q = deque(['a', 'b', 'c'])
-
- q.append('d')
-
- q.popleft()
-
- print(q)---------------->deque(['b', 'c', 'd'])
三、复杂度
访问Access:O(N)
搜索Search:O(N)
插入Insert:O(1)
删除Remove:O(1)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。