Trim 一个列表到最大元素数
Trim a list to a maximum number of elements
我想删除列表中最早添加的(即第一个)元素,以使该列表永远不会超过 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元素?
旁注:为此目的,除了列表之外还有其他东西吗?即具有最大大小的数据结构,这样如果有更多数据出现,最旧的将被删除! (这让我想到了先进先出?堆栈?管道?)
您可以只将切片分配回您的列表
L = L[-100:]
使用 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)
我想删除列表中最早添加的(即第一个)元素,以使该列表永远不会超过 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元素?
旁注:为此目的,除了列表之外还有其他东西吗?即具有最大大小的数据结构,这样如果有更多数据出现,最旧的将被删除! (这让我想到了先进先出?堆栈?管道?)
您可以只将切片分配回您的列表
L = L[-100:]
使用 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)