- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在学习 Python 中的数据结构时一直在学习队列,并想询问有关其使用的问题。
我想有两种方法从队列中追加/弹出。第一种方法是使用 deque.append()
和 deque.popleft()
.另一种方法是使用 deque.appendleft()
和 deque.pop()
.两者之间有性能差异吗?如果不是,根据您的经验,哪个更常用?您是否出于其他原因推荐一个?
在我看来,它们本质上做同样的事情,因为它们都实现了先进先出。您的意见将不胜感激!
最佳答案
根据 the docs :
Deques support thread-safe, memory efficient appends and pops from either side of the deque with approximately the same O(1) performance in either direction.
timeit
的实证结果确认基本没有区别:
from collections import deque
def append_popleft():
d = deque()
for i in range(10000):
d.append(i)
for j in range(10000):
d.popleft()
def appendleft_pop():
d = deque()
for i in range(10000):
d.appendleft(i)
for j in range(10000):
d.pop()
import timeit
t = timeit.timeit(append_popleft, number=10000)
print('append / popleft:', t)
t = timeit.timeit(appendleft_pop, number=10000)
print('appendleft / pop:', t)
append / popleft: 12.000681700999849
appendleft / pop: 11.937629571999423
关于python - 如何最有效地使用 collections.deque(popleft 与 appendleft),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58848553/
好的,这是代码。 from collections import deque list_stack = [] list_queue = ([]) string_to_list = "This is a
我目前正在使用以下方法创建我的 deque 对象, self.CommandList = deque((['S', False, 60],['c'],['g16'],['i50'],['r30', T
我在学习 Python 中的数据结构时一直在学习队列,并想询问有关其使用的问题。 我想有两种方法从队列中追加/弹出。第一种方法是使用 deque.append()和 deque.popleft() .
我是一名优秀的程序员,十分优秀!