我对编码很新,我想知道是否可以将python中的数组限制为100项。
如果有可能,你可以继续添加到该阵列并推出阵列中的旧数字吗?因此,每次添加新号码时,应将最旧的号码推出以腾出空间。
非常感谢你!
答案 0 :(得分:13)
是的,可以通过collections.deque
:
from collections import deque
lst = deque([], 100)
与list.append
一样,deque.append
就位:
A = deque(range(10), maxlen=10)
print(A)
deque([0, 1, 2, 3, 4, 5, 6, 7, 8, 9], maxlen=10)
A.append(10)
print(A)
deque([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], maxlen=10)
答案 1 :(得分:6)
如何创建一个简单的函数来执行此操作:
def add_to_array(lst, item, maxsize):
if len(lst) >= maxsize:
lst.pop(0)
lst.append(item)
其中的工作原理如下:
>>> lst = [i for i in range(1, 10)]
>>> lst
[1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> add_to_array(lst, 10, 10)
>>> lst
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> add_to_array(lst, 11, 10)
>>> lst
[2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
注意:如果您寻找更有效的内容,可以使用collections.deque
,如其他答案所述。
以下是使用deque
模拟您所需行为的示例:
>>> lst = deque((i for i in range(1, 10)), maxlen=10)
>>> lst
deque([1, 2, 3, 4, 5, 6, 7, 8, 9], maxlen=10)
>>> lst.append(10)
>>> lst
deque([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], maxlen=10)
>>> lst.append(11)
>>> lst
deque([2, 3, 4, 5, 6, 7, 8, 9, 10, 11], maxlen=10)