【发布时间】:2018-11-21 02:29:13
【问题描述】:
如果我使用代码
from collections import deque
q = deque(maxlen=2)
while step <= step_max:
calculate(item)
q.append(item)
another_calculation(q)
它在效率和可读性方面如何与
q = []
while step <= step_max:
calculate(item)
q.append(item)
q = q[-2:]
another_calculation(q)
calculate() 和 another_calculation() 在这种情况下不是真实的,但在我的实际程序中只是两个计算。我每一步都在为数百万步进行这些计算(我正在模拟二维空间中的离子)。因为步骤太多,q 变得很长并且占用大量内存,而another_calculation() 只使用了q 的最后两个值。我一直在使用后一种方法,然后听到提到deque,并认为它可能更有效;所以这个问题。
即,python 中的双端队列与普通列表切片相比如何?
【问题讨论】:
-
@timgeb 我可以计时,但我不知道为什么有些东西更快或更慢。我通过提问来了解更多信息。无论如何,对不起,我没有问一个足够好的问题。
-
最快的方法是创建一个包含一个元素的列表:
q = [item]。因此,这取决于您真正想做的事情,哪种解决方案是最好的。 -
@Daniel 我将向列表中添加多个元素;我只是在说明如何使用它。
-
@heather: 举个例子,目前没用。
-
@Daniel 已更新。
标签: python performance slice deque