【发布时间】:2022-10-07 12:24:52
【问题描述】:
我想限制python中列表的长度,每当len(list) > limit,第一项将被删除,我知道集合.deque可以实现相同的方式,但是,它会比仅仅执行以下操作要慢吗:
list_A = [2,4,6,8,11]
length_limit = 5
while True:
# do something to the list, for example, list_A.append(2)
if len(list_A) > length_limit:
list_A = list_A[1:]
此外,做这样的事情或collection.deque,还有其他方法可以实现它的可读性和效率吗?
-
复制将是 O(n),而 deque 是 O(1)。
-
复制是什么意思? @机械猪
-
当您使用切片
lista[1:]时,列表将被复制到除第一个元素之外的新列表。 -
我明白了,所以 deque 是实现它的最快方法吗?谢谢@MechanicPig
-
list_A[1:]在没有赋值的情况下不会改变任何东西。你的意思是list_A.pop(0)。正如已经建议使用双端队列。在末尾添加元素并在开始时删除元素会快得多。
标签: python list collections deque maxlength