《Python Cookbook 3rd》笔记(4.15):顺序迭代合并后的排序迭代对象
顺序迭代合并后的排序迭代对象
问题
你有一系列排序序列,想将它们合并后得到一个排序序列并在上面迭代遍历。
解法
heapq.merge() 函数可以帮你解决这个问题。比如:
>>> import heapq
>>> a = [1, 4, 7, 10]
>>> b = [2, 5, 6, 11]
>>> for c in heapq.merge(a, b):
... print(c)
...
1
2
4
5
6
7
10
11
讨论
heapq.merge 可迭代特性意味着它不会立马读取所有序列。这就意味着你可以在非常长的序列中使用它,而不会有太大的开销。比如,下面是一个例子来演示如何合并两个排序文件:
with open('sorted_file_1', 'rt') as file1, \open('sorted_file_2', 'rt') as file2, \open('merged_file', 'wt') as outf:for line in heapq.merge(file1, file2):outf.write(line)
有一点要强调的是 heapq.merge() 需要所有输入序列必须是排过序的。特别的,它并不会预先读取所有数据到堆栈中或者预先排序,也不会对输入做任何的排序检测。它仅仅是检查所有序列的开始部分并返回最小的那个,这个过程一直会持续直到所有输入序列中的元素都被遍历完。
《Python Cookbook 3rd》笔记(4.15):顺序迭代合并后的排序迭代对象相关推荐
- 《Python Cookbook 3rd》笔记汇总
文章目录 一.数据结构 二.字符串和文本 三.数字.日期和时间 四.迭代器与生成器 五.文件与IO 一.数据结构 标题 关键词 1.1:拆分序列后赋值给多个变量 可迭代对象.拆分赋值 1.2:拆分任意 ...
- 《Python Cookbook 3rd》笔记(1.4):查找最大或最小的N个元素
<Python Cookbook 3rd>1.4:查找最大或最小的N个元素 问题 怎样从一个集合中获得最大或者最小的N个元素列表? 解法 heapq 模块有两个函数:nlargest()和 ...
- Machine Learning with Python Cookbook 学习笔记 第9章
Chapter 9. Dimensionality Reduction Using Feature Extraction 前言 本笔记是针对人工智能典型算法的课程中Machine Learning w ...
- Python Cookbook 3rd Edition Documentation
Python Cookbook 3rd Edition Documentation 文章目录 第一章:数据结构和算法 1.1 解压序列赋值给多个变量 问题 解决方案 讨论 1.2 解压可迭代对象赋值给 ...
- 《Python cookbook》笔记二
<Python cookbook>笔记二 第二章 字符串和文本 -使用多个界定符分割字符串- 你需要将一个字符串分割为多个字段,但是分隔符 (还有周围的空格) 并不是固定 的. # str ...
- Machine Learning with Python Cookbook 学习笔记 第8章
Chapter 8. Handling Images 前言 本笔记是针对人工智能典型算法的课程中Machine Learning with Python Cookbook的学习笔记 学习的实战代码都放 ...
- Machine Learning with Python Cookbook 学习笔记 第6章
Chapter 6. Handling Text 本笔记是针对人工智能典型算法的课程中Machine Learning with Python Cookbook的学习笔记 学习的实战代码都放在代码压缩 ...
- 《Python Cookbook 3rd》笔记(4.11):同时迭代多个序列
同时迭代多个序列 问题 你想同时迭代多个序列,每次分别从一个序列中取一个元素. 解法 为了同时迭代多个序列,使用 zip() 函数.比如: >>> xpts = [1, 5, 4, ...
- 《Python Cookbook 3rd》笔记(4.10):序列上索引值迭代
序列上索引值迭代 问题 你想在迭代一个序列的同时跟踪正在被处理的元素索引. 解法 内置的 enumerate() 函数可以很好的解决这个问题: >>> my_list = ['a', ...
最新文章
- 公差基本偏差代号_《公差配合与技术测量》试题答案卷
- Java 接口实现计算器加减乘除(字符交互界面)
- 面对非线性可分的情况怎么处理
- Reading——The Non-Designer's Design Book
- java 雅思_基于JAVA的雅思考试管理系统的设计与实现(SSH,MySQL)(含录像)
- linux添加phoenix引导,在linux怎么执行phoenix 脚本
- OUTLOOK2019 解决 无法验证您连接到的服务器使用的安全证书
- android flutter 环境,Android Studio 中创建Flutter环境配置(Mac环境)
- 机器人领域会议期刊特点
- aws beanstalk mysql_AWS Beanstalk搭建WordPress站点
- 关于“客户感知价值提升”的思考(三)---电商渠道客户感知管理方法探讨
- ImageView设置边框的两种方式
- std::thread
- Linux移植Windows摄像头驱动,Arm-Linux摄像头驱动程序的移植
- 第三方百度地图-----展示所在位置显示小圆点
- Dining (网络流)
- 进制转换 2进制转10进制 10进制转2进制
- Field baseMapper in com.xxx required a single bean,but 100 were found --------Mybatis-Plus
- 社群运营有哪六种裂变模型?
- js逆向-常见的加密算法
热门文章
- 三菱d700变频器接线图_图解PLC与变频器通讯接线
- greenfoot推箱子游戏_推箱子小游戏V2.0更新
- 电脑安装系统多少钱_电脑系统安装教学
- 【转】ABP源码分析三:ABP Module
- c#中常用集合类和集合接口之接口系列【转】
- SharePoint Desiger编辑模板时提示“服务器错误,拒绝访问”的解决之道
- SharePoint网站集备份与恢复
- java 服务降级_微服务的降级学习
- python代码实例sicket_Python socket聊天脚本代码实例
- Angular 下拉搜索框实现