Python Cookbook学习笔记-队列的处理
Python Cookbook学习笔记
1.1 队列的处理
1.1.1 使用队列保留最后的指定条记录
重点是deque
的使用,在新建deque
时,通过maxlen
参数指定队列长度,该队列在满之后,再追加数据,会把队首的数据挤出去,始终保持长度不变,该功能用于保存指定条数的历史记录非常实用。
如下代码示例:源自Python Cookbook
from collections import deque
def search(lines, pattern, history=3):
previous_lines = deque(maxlen=history)
for line in lines:
if pattern in line:
yield line, previous_lines
previous_lines.append(line)
# Example use on a file
if __name__ == '__main__':
with open('somefile.txt') as f:
for line, prevlines in search(f, 'python', 3):
for pline in prevlines:
print(pline, end='')
print(line, end='')
print('-'*20)
- 知识点汇总:
- 函数中使用
yield
可以返回多个参数 - 字符串匹配可以使用
in
操作符 - 文件读取直接使用
open(xxx.txt) as file
, 再使用for..in
即可读取文件 - 克隆字符串使用
*
操作符
- 函数中使用
输出结果: (注意:somefile.txt文件每行最好包含python字样)
python test line 001.
--------------------
python test line 001.
python test line 002.
--------------------
python test line 001.
python test line 002.
python test line 003.
--------------------
python test line 001.
python test line 002.
python test line 003.
python test line 004.
--------------------
python test line 002.
python test line 003.
python test line 004.
python test line 005.
--------------------
- deque使用小技巧
- 队尾追加元素:
append(3)
- 队首插入元素:
appendleft(4)
- 队尾出栈:
pop()
- 队首出栈:
popleft()
- 队尾追加元素:
作者声明:本文用于记录和分享作者的学习心得,水平有限,难免存在表达错误,欢迎交流和指教!
Copyright © 2022~2024 All rights reserved.