我想删除列表中最旧的(即第一个)元素,这样该列表永远不会超过100个元素.
我想过:
L = [327983, 232382, 1, 2, 3, 4, 5, 6, 23]
if len(L) > 100:
for i in range(len(L)-100):
del L[0]
print L # [4, 5, 6, 23]
Run Code Online (Sandbox Code Playgroud)
是否有一个没有迭代的解决方案(或更一般地说:一个更好的解决方案)来修剪列表的开头,以便它有<= 100个元素?
旁注:为此目的,除了列表之外,还有其他什么吗?即具有最大大小的数据结构,并且如果有更多数据,则删除最旧的数据!(这让我想到FIFO?Stack?Pipe?)
怎么用collection.deque?如果指定maxlen,则不会存储多个maxlen元素.
>>> from collections import deque
>>> q = deque([1, 2, 3], maxlen=3)
>>> q
deque([1, 2, 3], maxlen=3)
>>> q.append(4)
>>> q
deque([2, 3, 4], maxlen=3)
Run Code Online (Sandbox Code Playgroud)