def search(lines, pattern, history=5): previous_lines = deque(maxlen=history) for line in lines: if pattern in line: yield line, previous_lines previous_lines.append(line)
if pattern in line: yield line, previous_lines previous_lines.append(line) # 生成器函数将处理搜索过程的代码和使用搜索结果的代码解耦开 # deque创建一个固定长度的队列,新记录加入队列已满的时候会自动移除最老的记录 with open("filename.txt") as f: for line, prevlines in search(f, "python", 5): for pline in prevlines: # 默认是以换行符结尾的 print(pline, end="") print(line, end="") print("-" * 20) # deque的操作 q = deque(maxlen=3) q.append(1) q.append(2) q.append(3) q.append(4) print(q) q.appendleft(5) print(q) print(q.pop()) print(q.popleft()) # 4.找到最大或者最小的n个元素 # 从一个集合中获得到最大或者最小的N个元素的列表 nums = [1, 8, 2, 23, 7, -3, 18, 23, 42, 37, 2] # 使用max或者min函数获取最大或者最小值 print(max(nums), min(nums))