美文网首页
Python3 - 保留最后 N 个元素

Python3 - 保留最后 N 个元素

作者: 惑也 | 来源:发表于2018-12-17 10:21 被阅读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)

相关文章

  • Python3 - 保留最后 N 个元素

    问题 在迭代操作或者其他操作的时候,怎样只保留最后有限的几个元素? 解决方案 使用 deque(maxlen=N)...

  • python数据结构

    Python CookBook总结 保留最后N 个元素 使用deque(maxlen=N) 构造函数会新建一个固定...

  • 【Python进阶】1.3 保留最后 N 个元素(deque)

    欢迎关注Julia语言微信公众账号 julia_language 原文链接:http://suo.im/4SxFf...

  • 保存最后n个元素

    本系列来自python cookbook 问题 有时候,我们只需要保留最新的几个元素。比如,最新的二十件新鲜事;再...

  • 保存最后N个元素

  • 消除重复元素

    问题描述 小易有一个长度为n序列,小易想移除掉里面的重复元素,但是小易想是对于每种元素保留最后出现的那个。小易遇到...

  • 利用数组实现堆

    成员变量 元素个数N包含元素的数组items 方法 插入删除 插入实现 1 将元素直接插入到最后一个元素(N),N...

  • [编程题] 消除重复元素

    小易有一个长度为n序列,小易想移除掉里面的重复元素,但是小易想是对于每种元素保留最后出现的那个。小易遇到了困难,希...

  • Python保留最后几个元素

    保留最后几个元素 问题 在迭代操作或其他操作的时候,怎样只保留最后有限几个元素的历史记录? 解决方案 保留有限历史...

  • cookbook笔记第一章

    第一章 数据结构与算法 0.保留最后的n个元素。 主要是collections.deque,提供了两端都可以操作的...

网友评论

      本文标题:Python3 - 保留最后 N 个元素

      本文链接:https://www.haomeiwen.com/subject/yevfkqtx.html