Python3 - 保留最后 N 个元素

2018-12-17  本文已影响20人  惑也

问题

在迭代操作或者其他操作的时候,怎样只保留最后有限的几个元素?

解决方案

使用 deque(maxlen=N) 构造函数会新建一个固定大小的队列。当新的元素加入并且这个队列已满的时候, 最老的元素会自动被移除掉。

from collections import deque

a = [1, 2, 4, 100, 5, 6]
b = deque(maxlen=3)
for i in a:
    b.append(i)

print(b)
deque([100, 5, 6], maxlen=3)

尽管可以手动在一个列表上实现一些操作,比如:增加、删除等。但使用这种队列方案,会更加优雅并且运行得更快些。

讨论

deque 类可以被用在任何需要一个简单队列数据结构的场合。可以在队列的两端执行添加和弹出元素的操作。 如果不设置最大队列大小,就会得到一个无限大小的队列。

b.appendleft(-100)
print(b)
deque([-100, 100, 5], maxlen=3)

b.pop()
print(b)
deque([-100, 100], maxlen=3)

b.popleft()
print(b)
deque([100], maxlen=3)

在队列两端插入或删除元素的时间复杂度都是 O(1) ,区别于列表,在列表的开头插入或删除元素的时间复杂度为 O(N)

上一篇 下一篇

猜你喜欢

热点阅读