提出问题:

有时候,我们希望能在迭代或者其他处理过程中,保留最后几个符合要求的内容记录。

解决思路:

保存最后N个元素或者有限历史记录,可以用到collections.deque方法。例如,在一个文件里面查找,符合要求的文字,当发现有成功匹配的就输出当前的匹配行以及最后检查过的N行文本。

from collections import deque #导入deque模块def search(lines,pattern,history=5):previous_lines=deque(maxlen=history)for line in lines:  #循环遍历if pattern in line:yield line ,previous_lines  #yield 生成器,暂时保存返回当前变量previous_lines.append(line)if __name__ == '__main__':with open('SearchPython.txt') as f: #打开本地文件for line ,prevlines in search(f,'python',5):    #在此文件中搜索,规则是python ,次数是5次for pline in prevlines:print(pline,end='')     #下面是格式输出print(line,end='')print('-'*20)

本地一个SearchPython.txt文档

    12pythonpython10pppython1wepythonqqpython12

查看搜索后结果:

12python
--------------------
12python
python10
--------------------
12python
python10
pppython1
--------------------
12python
python10
pppython1
wepython
--------------------
12python
python10
pppython1
wepython
qqpython12
--------------------

深入讨论:

上面代码中的deque(maxken=N),其实是创建了一个固定长度的队列,有记录来临时会在尾部插入,当队列满时,自动移除最老的那条记录。比如:

更简单而又普遍的方式是,如果我们不指定队列的大小,就会得到一个没有边界的队列,可以在两端执行添加和弹出操作,比如:

时间复杂度分析:

从队列两端添加或弹出元素的复杂度都是O(1),这一点是和列表是有区别的。当从列表的头部插入或移除元素时,由于所有的元素都自动向前或向后移位,列表的时间复杂度为O(N)

Python保存最后N个元素相关推荐

  1. python保存数据到本地文件_python保存数据到本地文件的方法

    python保存数据到本地文件的方法 1.保存列表为.txt文件 #1/list写入txt ipTable = ['158.59.194.213', '18.9.14.13', '58.59.14.2 ...

  2. Python 获取list 中指定元素出现的次数

    Python 获取list 中指定元素出现的次数 使用list 的count 方法 list_a = [1, 2, 3, 1, 4, 5, 1] print("1 出现的次数: %d&quo ...

  3. python 保存内容到记事本里面

    python 保存内容到记事本里面 使用函数open 模式设置为,没有记事本的时候创建记事本即可, 代码很简单如下 def writeTxt():file = open(r"C:\text. ...

  4. python保存大列表(list)数据到文件并后续重新加载为列表(list)对象实战

    python保存大列表(list)数据到文件并后续重新加载为列表(list)对象实战 笔者遇到的问题是这样的, 在做机器学习模型的时候,有的时候会使用相关性分析的方法来进行特征的筛选,去除冗余特征,降 ...

  5. python保存内容到文件(text、json、csv)

    python保存内容到文件(text.json.csv) 在开发人员的日常中,将数据保存到文件是最常见的编程任务之一. 通常,程序需要一些输入并产生一些输出.在许多情况下,我们希望将这些结果持久化.我 ...

  6. python 替换字符串中的元素

    python 替换字符串中的元素 def str_replace(old_str,old,new):"""在 old_str 字符串中,把 old 替换成 new:par ...

  7. python列表操作:追加元素到列表的代码

    将做工程过程中常用的内容做个收藏,如下的内容是关于python列表操作:追加元素到列表的内容. scores = ["1","2","3"] ...

  8. python list查找元素_使用python list 查找所有匹配元素的位置实例

    使用python list 查找所有匹配元素的位置实例 如下所示: import re word = "test" s = "test abcdas test 1234 ...

  9. 解决python 保存json到文件时 中文显示16进制编码的问题

    解决python 保存json到文件时 中文显示16进制编码的问题 参考文章: (1)解决python 保存json到文件时 中文显示16进制编码的问题 (2)https://www.cnblogs. ...

最新文章

  1. Python超过R,成为数据科学和机器学习的首选语言!
  2. 分布式消息队列 — RabbitMQ(3)
  3. 文件头_常见文件文件头
  4. confluence安装_Hive安装
  5. P4288 [SHOI2014]信号增幅仪 最小圆覆盖
  6. 1 京东_推荐好友拿好礼 | 每1积分可兑换30元京东电子卡
  7. 用python画长方形_Python+opencv:绘制矩形,编写文本,PythonOpenCV,画,矩形框
  8. vs2017中配置openGL环境
  9. Java 8 golang 1.8_Java8 新特性(一) - Lambda
  10. DDR3 Vivado 仿真测试成功
  11. 爬取中国天气网获取全国城市编码并存入mysql数据库
  12. VUE项目引入公共样式的styl文件
  13. 基于pytorch使用LSTM进行虎年春联生成
  14. Eclipse 代码整理
  15. 如何解决苹果电脑键盘失灵的问题
  16. 山茶油的功效与食用方法
  17. 微信退款服务器系统失败怎么办,微信退款多久到账?微信退款不成功怎么办?...
  18. Scrapy爬虫框架(实战篇)【Scrapy框架对接Splash抓取javaScript动态渲染页面】
  19. 盘点我用过的导出Excel的方法
  20. windows server2012R将域名和访问的网址绑定

热门文章

  1. ArrayBlockingQueue源码
  2. python怎么运行_程序员大牛讲解,Python程序的执行原理
  3. 投票选举c语言程序,C语言元旦礼物:经典入门问题分析——选举投票
  4. 企业运维笔试考题(1)
  5. jmeter3.3—插件管理器的安装
  6. 安卓开源项目周报0215
  7. 【7】AccessDB快速数据访问
  8. 位图排序(计数排序)
  9. 计篇-之一文言文翻译
  10. 3COM小型企业有线局域网方案(三、四、五)