Python保存最后N个元素
提出问题:
有时候,我们希望能在迭代或者其他处理过程中,保留最后几个符合要求的内容记录。
解决思路:
保存最后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个元素相关推荐
- python保存数据到本地文件_python保存数据到本地文件的方法
python保存数据到本地文件的方法 1.保存列表为.txt文件 #1/list写入txt ipTable = ['158.59.194.213', '18.9.14.13', '58.59.14.2 ...
- Python 获取list 中指定元素出现的次数
Python 获取list 中指定元素出现的次数 使用list 的count 方法 list_a = [1, 2, 3, 1, 4, 5, 1] print("1 出现的次数: %d&quo ...
- python 保存内容到记事本里面
python 保存内容到记事本里面 使用函数open 模式设置为,没有记事本的时候创建记事本即可, 代码很简单如下 def writeTxt():file = open(r"C:\text. ...
- python保存大列表(list)数据到文件并后续重新加载为列表(list)对象实战
python保存大列表(list)数据到文件并后续重新加载为列表(list)对象实战 笔者遇到的问题是这样的, 在做机器学习模型的时候,有的时候会使用相关性分析的方法来进行特征的筛选,去除冗余特征,降 ...
- python保存内容到文件(text、json、csv)
python保存内容到文件(text.json.csv) 在开发人员的日常中,将数据保存到文件是最常见的编程任务之一. 通常,程序需要一些输入并产生一些输出.在许多情况下,我们希望将这些结果持久化.我 ...
- python 替换字符串中的元素
python 替换字符串中的元素 def str_replace(old_str,old,new):"""在 old_str 字符串中,把 old 替换成 new:par ...
- python列表操作:追加元素到列表的代码
将做工程过程中常用的内容做个收藏,如下的内容是关于python列表操作:追加元素到列表的内容. scores = ["1","2","3"] ...
- python list查找元素_使用python list 查找所有匹配元素的位置实例
使用python list 查找所有匹配元素的位置实例 如下所示: import re word = "test" s = "test abcdas test 1234 ...
- 解决python 保存json到文件时 中文显示16进制编码的问题
解决python 保存json到文件时 中文显示16进制编码的问题 参考文章: (1)解决python 保存json到文件时 中文显示16进制编码的问题 (2)https://www.cnblogs. ...
最新文章
- Python超过R,成为数据科学和机器学习的首选语言!
- 分布式消息队列 — RabbitMQ(3)
- 文件头_常见文件文件头
- confluence安装_Hive安装
- P4288 [SHOI2014]信号增幅仪 最小圆覆盖
- 1 京东_推荐好友拿好礼 | 每1积分可兑换30元京东电子卡
- 用python画长方形_Python+opencv:绘制矩形,编写文本,PythonOpenCV,画,矩形框
- vs2017中配置openGL环境
- Java 8 golang 1.8_Java8 新特性(一) - Lambda
- DDR3 Vivado 仿真测试成功
- 爬取中国天气网获取全国城市编码并存入mysql数据库
- VUE项目引入公共样式的styl文件
- 基于pytorch使用LSTM进行虎年春联生成
- Eclipse 代码整理
- 如何解决苹果电脑键盘失灵的问题
- 山茶油的功效与食用方法
- 微信退款服务器系统失败怎么办,微信退款多久到账?微信退款不成功怎么办?...
- Scrapy爬虫框架(实战篇)【Scrapy框架对接Splash抓取javaScript动态渲染页面】
- 盘点我用过的导出Excel的方法
- windows server2012R将域名和访问的网址绑定