1

itertools 模块中主要包含了一些用于生成迭代器的函数。在 Python 的交互式解释器中先导入 itertools 模块,然后输入 e for e in dir(itertools) if not e.startswith(_) 命令,即可看到该模块所包含的全部属性和函数:cycle(p):对序列 p 生成无限循环 p0, p1,..., p0, p1,... 的迭代器。比如使用 cycle(ABCD) 生成的迭代器包含:A,B,C,D,A,B,C,D,...。

2

从上面的输出结果可以看出,itertools 模块中的不少函数都可以用于生成迭代器。先看 itertools 模块中三个生成无限迭代器的函数:count(start, step):生成 start, start+step, start+2*step,... 的迭代器,其中 step 默认为 1。比如使用 count(10) 生成的迭代器包含:10, 11 , 12 , 13, 14,...。repeat(elem ,n):生成无限个 elem 元素重复的迭代器,如果指定了参数 n,则只生成 n 个 elem 元素。比如使用 repeat(10, 3) 生成的法代器包含:10, 10, 10。下面程序示范了使用上面三个函数来生成迭代器:

3

在 itertools 模块中还有一些常用的迭代器函数,如下所示:accumulate(p,func):默认生成根据序列 p 元素累加的迭代器,p0, p0+p1, p0+p1+p2,...序列,如果指定了 func 函数,则用 func 函数来计算下一个元素的值。chain(p, q, ...):将多个序列里的元素“链”在一起生成新的序列。compress(data, selectors):根据 selectors 序列的值对 data 序列的元素进行过滤。如果 selector0 为真,则保留 data0;如果 selector1 为真,则保留 data1......依此类推。dropwhile(pred, seq):使用 pred 函数对 seq 序列进行过滤,从 seq 中第一个使用 pred 函数计算为 False 的元素开始,保留从该元素到序列结束的全部元素。takewhile(pred, seq):该函数和上一个函数恰好相反。使用 pred 函数对 seq 序列进行过滤,从 seq 中第一个使用 pred 函数计算为 False 的元素开始,去掉从该元素到序列结束的全部元素。filterfalse(pred, seq):使用 pred 函数对 seq 序列进行过滤,保留 seq 中使用 pred 计算为 True 的元素。比如 filterfalse(lambda x:x%2, range(10)),得到 0, 2, 4, 6, 8。islice(seq, start, stop , step):其功能类似于序列的 slice 方法,实际上就是返回 seqstart:stop:step 的结果。starmap(func, seq):使用 func 对 seq 序列的每个元素进行计算,将计算结果作为新的序列元素。当使用 func 计算序列元素时,支持序列解包。比如 seq 序列的元素长度为 3,那么 func 可以是一个接收三个参数的函数,该函数将会根据这三个参数来计算新序列的元素。zip_longest(p,q,...):将 p、q 等序列中的元素按索引合并成元组,这些元组将作为新序列的元素。上面这些函数的测试程序如下:

4

运行上面程序,可以看到如下输出结果:

5

在 itertools 模块中还有一些用于生成排列组合的工具函数:product(p, q, ...repeat= 1):用序列 p 、q 、... 中的元素进行排列组合,就相当于使用嵌套循环组合。permutations(p, r):从序列 p 中取出 r 个元素组成全排列,将排列得到的元组作为新迭代器的元素。combinations(p, r):从序列 p 中取出 r 个元素组成全组合,元素不允许重复,将组合得到的元组作为新迭代器的元素。combinations with_replacement(p, r),从序列 p 中取出 r 个元素组成全组合,元素允许重复,将组合得到的元组作为新迭代器的元素。如下程序示范了上面 4 个函数的用法:

6

上面程序用到了一个字符串的 join() 方法,该方法用于将元组的所有元素连接成一个字符串。运行程序,可以看到如下输出结果:

END

python自带intertool模块找不到_Python itertools模块:生成迭代器(示例分析)相关推荐

  1. python自带intertool模块找不到_Python itertools模块详解

    这货很强大, 必须掌握 基本是基于文档的翻译和补充,相当于翻译了 itertools用于高效循环的迭代函数集合 组成 总体,整体了解 无限迭代器 复制代码代码如下: 迭代器 参数 结果 例子 coun ...

  2. python自带intertool模块找不到_介绍Python中内置的itertools模块

    Python的内建模块itertools提供了非常有用的用于操作迭代对象的函数. 首先,我们看看itertools提供的几个"无限"迭代器: >>> import ...

  3. python中导入模块用什么命令_Python导入模块的技巧

    作为使用Python的开发者,我们一开始学习的内容之一就是如何导入Python的各种模块或库.但是我们注意到,那些经常使用Python的用户并不一定都知道Python的导入机制其实非常灵活.在本文中, ...

  4. python最常用的编程方式是什么_python常用模块和对象编程

    1.摘要 常用模块 对象编程 领域模型 2.常用模块 2.1shutil模块 2.1.1 shutil.copyfileobj(fsrc, fdst[, length]) 1 f = open(&qu ...

  5. python导入同一文件夹下的类_python自定义模块

    模块的引入方式: 1.import 模块名:导入模块中的所有内容(引入多个用逗号分隔) import random,time 2.from 模块名 import 函数名1,函数名2... 导入部分模块 ...

  6. python的sys模块有什么用_python sys模块详解

    Python sys 模块详解 1. 简介 "sys"即"system","系统"之意.该模块提供了一些接口,用于访问 Python 解释器 ...

  7. python logging模块默认日志级别_Python 日志模块logging

    logging模块: logging是一个日志记录模块,可以记录我们日常的操作. logging日志文件写入默认是gbk编码格式的,所以在查看时需要使用gbk的解码方式打开. logging日志等级: ...

  8. python中的模块是什么意思_python中模块到底指的是什么

    python中模块到底指的是什么 发布时间:2020-08-03 16:04:57 来源:亿速云 阅读:81 作者:清晨 小编给大家分享一下python中模块到底指的是什么,相信大部分人都还不怎么了解 ...

  9. pythonos模块使用技巧大全_Python os模块常用部分功能总结

    Python编程语言优势特点比较突出,已经出现就凭借这些功能优势吸引着开发人员的眼球.在Python这一语言中,有一种标准模块叫做os模块,Python os模块包含普遍的操作系统功能.如果你希望你的 ...

最新文章

  1. 正则表达式中空格的危害
  2. ecm工作原理 usb_USB中CDC-ECM的了解和配置
  3. (纯干货)万字长文,数据分析利器 pandas 全教程
  4. python操作hdfs_python 操作hdfs
  5. 微机原理换行代码_设置段落样式的标记中,用来换行的标记是:
  6. java 窗体 源码_Java制作MDI窗体源代码
  7. 优化Meta讨好搜索引擎 更好的提升网站排名
  8. arguments的理解
  9. octave与matlab语法,Octave与Matlab
  10. windows Server 2016 开启远程登录和多用户同时远程登录
  11. 使用nsenter进入Docker容器
  12. Gartner 2020年十大战略科技发展趋势:边缘赋能、区块链、超自动化、人工智能安全等...
  13. Python内置函数(28)——hash
  14. C#三层架构详细解剖
  15. tar -zxvf是什么意思
  16. 制作“玄”字logo
  17. 现代密码学大作业(一):实现单表替换的频率分析(python3.7)
  18. vue中怎么实现吸顶效果
  19. LaKSA: A Probabilistic Proof-of-Stake Protocol
  20. 中国 Open Source Summit 演讲提案征集

热门文章

  1. 特斯拉首次达成连续4季度盈利:车卖的少了,钱却挣得多了
  2. MinIO分布式专题(第一章、一文教你搭建MinIO单机版)
  3. Zookeeper源码分析:Follower角色初始化
  4. 操作系统学习:进程、线程与Linux0.12初始化过程概述
  5. 汇编语言学习-寄存器(CPU工作原理)
  6. intellij idea的out目录下为什么会有与src名字相同的.class文件呢?
  7. C语言指针表示二维数组的方法!_只愿与一人十指紧扣_新浪博客
  8. 资源|深度学习注意力机制TensorFlow 使用教程
  9. 计算机视觉的优点和局限性
  10. 用于道路目标检测的少镜头学习