官方描述:Functional tools for creating and using iterators.即用于创建高效迭代器的函数。

函数目录

无限迭代器 有限迭代器 组合生成器
count chain product
cycle compress permutations
repeat dropwhile
filterfalse combinations
groupby combinations_with_replacement
islice
starmap
takewhile
tee
zip_longest

1、chain

itertools.chain(*iterables) : 将多个序列作为一个单独的序列返回。

示例:

import itertools
for i in itertools.chain('i', 'love', 'python'):print(i,end=' ')
------------------
结果:
i l o v e p y t h o n

2、combinations

itertools.combinations(iterable, r):返回指定长度的”组合”

示例:

import itertools
for i in itertools.combinations('abc', 2):print(i,end=' ')
---------------------
结果:
('a', 'b') ('a', 'c') ('b', 'c')

3、combinations_with_replacement

itertools.combinations_with_replacement(iterable, r):返回指定长度的“组合”,组合内元素可重复

示例:

import itertools
for i in  itertools.combinations_with_replacement('abc', 2):print(i,end=' ')
----------------------
结果:
('a', 'a') ('a', 'b') ('a', 'c') ('b', 'b') ('b', 'c') ('c', 'c')

4、compress

itertools.compress(data, selectors):返回selector为True的data对应元素

示例:

import itertools
for i in itertools.compress('abcd', [1, 0, 1, 0]):print(i,end=' ')
----------------------
结果:
a c

5、count

itertools.count(start=0,step=1):返回以start开始,step递增的序列,无限递增

示例:

import itertools
for i in itertools.count(start=0, step=2):print(i,end=' ')
----------------------
结果:
a b a b···

6、cycle

itertools.cycle(iterable):将迭代器进行无限迭代

示例:

import itertools
for i in itertools.cycle('ab'):print(i,end=' ')
----------------------
结果:
a b a b···

7、dropwhile

itertools.dropwhile(predicate, iterable):直到predicate为真,就返回iterable后续数据, 否则drop掉

示例:

import itertools
for i in itertools.dropwhile(lambda x: x<5, [2,1,6,8,2,1]):print(i,end=' ')
----------------------
结果:
6 8 2 1

8、filterfalse

itertools.ifilter(predicate, iterable):返回predicate结果为True的元素迭代器,如果predicate为None,则返回所有iterable中为True的项

示例:

import itertools
for i in itertools.filterfalse(lambda x: x % 2, range(10)):print(i,end=' ')
----------------------
结果:
0 2 4 6 8

9、groupby

itertools.groupby(iterable[,key]):返回一组(key,itera),key为iterable的值,itera为等于key的所有项

示例:

import itertools
for key,value in itertools.groupby('aabbbc'):print(key,':',list(value),end=' ')
----------------------
结果:
a : ['a', 'a'] b : ['b', 'b', 'b'] c : ['c']

10、islice

itertools.islice(iterable, start,stop[,step]):相当于迭代器方式的切片操作

示例:

import itertools
for i in itertools.islice('abcdefg', 1, 4, 2):print(i,end=' ')
----------------------
结果:
b d

11、permutations

itertools.premutations(iteravle[,r]):返回长度为r的排列

示例:

import itertools
for i in itertools.permutations('abc', 2):print(i,end=' ')
----------------------
结果:
('a', 'b') ('a', 'c') ('b', 'a') ('b', 'c') ('c', 'a') ('c', 'b')

12、product

itertools.product(*iterable[,repeat]):返回指定长度的所有组合,可理解为笛卡尔乘积

示例:

import itertools
for i in itertools.product('abc', repeat=2):print(i,end=' ')
----------------------
结果:
('a', 'a') ('a', 'b') ('a', 'c') ('b', 'a') ('b', 'b') ('b', 'c') ('c', 'a') ('c', 'b') ('c', 'c')

13、repeat

itertools.repeat(object,[,times]):不停的返回object对象,如果指定了times,则返回times次

示例:

import itertools
for i in  itertools.repeat('a', 2):print(i,end=' ')
----------------------
结果:
a a

14、starmap

itertools.starmap(function,iterable):返回function(iter)的值,iter为iterable的元素

示例:

import itertools
for i in itertools.starmap(lambda x,y: x*y,[(1, 2),(3, 4)]):print(i,end=' ')
----------------------
结果:
2 12

15、takewhile

itertools.takewhile(predicate,iterable):如果predicate为真,则返回iterable元素,如果为假则不再返回,break

示例:

import itertools
for i in itertools.takewhile(lambda x: x<5,[1,3,5,6]):print(i,end=' ')
----------------------
结果:
1 3

16、tee

itertools.tee(iterable, n=2): 用于从 iterable 创建 n 个独立的迭代器,以元组的形式返回, n 的默认值是 2

示例:

import itertools
for i in itertools.tee('abcd'):print(list(i),end=' ')
----------------------
结果:
['a', 'b', 'c', 'd'] ['a', 'b', 'c', 'd']

17、zip_longest

itertools.zip_longest(*iterables, fillvalue=None):若可迭代对象的长度未对齐,如果有指定 fillvalue ,则会用其填充缺失的值,否则为 None 。

示例:

import itertools
for i in itertools.zip_longest('ABCD', 'xy'):print(list(i),end=' ')
----------------------
结果:
['A', 'x'] ['B', 'y'] ['C', None] ['D', None]

学习笔记——itertools模块相关推荐

  1. Python学习笔记:第三方模块2

    前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...

  2. python中socket模块常用吗_python网络学习笔记——socket模块使用记录

    此文章记录了笔者学习python网络中socket模块的笔记. 建议初次学习socket的读者先读一遍socket模块主要函数的介绍. socket模块的介绍可以参考笔者的前一篇关于socket官方文 ...

  3. Verilog学习笔记-——Verilog模块例化

    Verilog学习笔记---Verilog模块例化 在一个模块中引用另一个模块,对其端口进行相关连接,叫做模块例化.模块例化建立了描述的层次.信号端口可以通过位置或名称关联,端口连接也必须遵循一些规则 ...

  4. Python学习笔记13_模块

    Python学习笔记13_模块 文章目录 Python学习笔记13_模块 1.导入模块和的方法及使用 2.分层的文件系统中常用的包结构 3.OS 模块 4.sys 模块 5.math 模块 6.ran ...

  5. 【小猫爪】AUTOSAR学习笔记15-BswM模块

    [小猫爪]AUTOSAR学习笔记15-BswM模块 前言 1 BswM模块简介 2 BswM功能简介 2.1 模式仲裁 2.2 模式控制 END 前言   上一节介绍了一个非常夸张的EcuM模块,其中 ...

  6. 【小猫爪】AUTOSAR学习笔记14-EcuM模块

    [小猫爪]AUTOSAR学习笔记14-EcuM模块 前言 1 EcuM模块简介 2 EcuM功能简介 2.1 EcuM的状态机 2.2 RUN和POST_RUN 2.3 Startup阶段 1. St ...

  7. Julia 学习笔记(五) | 模块开发 - 保姆级教程

    唠唠闲话 今年参与了 OSPP'22 的 Julia 开源项目,期间学习了 Julia 模块从开发到测试的完整过程.借这个机会,整理这段时间学习到的知识.Julia 在开发提供的工具便捷丰富,且对新人 ...

  8. 蜂鸟E203学习笔记-取指模块概述(2)

    蜂鸟E203学习笔记 前言 1 部分译码 2 分支预测与PC生成 3 请求与响应 4 流水线冲刷 5 阻塞请求 前言 本文取指模块概述后半部分,前半部分跳转至:取指模块概述(1) 1 部分译码 Min ...

  9. 《Python零基础快乐学习之旅》学习笔记13——模块的设计与应用

    文章目录 第13章 模块的设计与应用 13.1 将自建的函数存储在模块中 13.1.1 准备工作 13.1.2 创建函数内容的模块 13.2 应用函数模块 13.2.1 import 语句 13.2. ...

最新文章

  1. java压缩解压缩类实例[转]
  2. 精确分割和筛选音频从长的音频中
  3. 在IIS中部署Asp.net Mvc
  4. 图书管理系统_目前图书管理系统存在的问题
  5. wzplayer for android V1.0快出炉了
  6. php 原生抓取关键词,php获取从百度、谷歌等搜索引擎进入网站关键词的方法
  7. eclipse导入项目中文乱码
  8. 中文文本对齐_word排版技巧:如何让词组文字分散对齐
  9. STM32工作笔记0012---认识老化试验
  10. (转)主成分分析(Principal components analysis)-最大方差解释
  11. Linux系统密码忘记教程
  12. 项目管理(软件开发)之甘特图使用
  13. 数据库原理与应用实验3--(数据库的简单查询和连接查询)
  14. AIM Tech Round (Div. 1) C. Electric Charges 二分
  15. STM32内部参考电压的使用
  16. xmanager linux 配置,配置Xmanager连接Linux
  17. 数据页和数据行(翻译)
  18. layui搜索重置功能
  19. 同为博客,不同风格 — Hexo 另类搭建
  20. Java产品:CRM客户关系管理系统

热门文章

  1. Python中的random模块
  2. vue 登录模板_不用自己搭建后台模板,使用这个就够了
  3. scala外部传入时间参数-亲测有效
  4. R语言应用实战-基于R浅谈SEIR传染病模型以以及马尔萨斯,logistic模型(推导过程和源代码)
  5. 如何利用弹幕,打造出非凡的观看体验
  6. C语言输入end时结束程序,给大家一个程序,输入多个字符串以END结束后排序,这个程序运行,即结果都是对的。...
  7. vb.net 功能f8键事件_笔记本电脑功能键介绍
  8. 欢迎进入 K同学啊 的博客目录(全站式导航)
  9. LeetCode-字符串-反转字符串中的单词 II
  10. 用python读取、处理、另存为csv文件