将列表修剪为最大元素数

时间:2015-06-08 12:44:36

标签: python list fifo

我想删除列表中最早添加的(即第一个)元素,这样该列表永远不会超过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]

是否有没有迭代的解决方案(或更一般地说:更好的解决方案)用于修剪列表的开头,以便它具有< = 100个元素?

旁注:为此目的,除了列表之外还有别的东西吗?即,具有最大大小的数据结构,并且如果有更多数据,则删除最旧的数据! (这让我想到FIFO?Stack?Pipe?)

2 个答案:

答案 0 :(得分:7)

如何使用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)

答案 1 :(得分:2)

您只需将切片指定回列表

即可
L = L[-100:]