学习笔记——itertools模块
官方描述: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模块相关推荐
- Python学习笔记:第三方模块2
前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...
- python中socket模块常用吗_python网络学习笔记——socket模块使用记录
此文章记录了笔者学习python网络中socket模块的笔记. 建议初次学习socket的读者先读一遍socket模块主要函数的介绍. socket模块的介绍可以参考笔者的前一篇关于socket官方文 ...
- Verilog学习笔记-——Verilog模块例化
Verilog学习笔记---Verilog模块例化 在一个模块中引用另一个模块,对其端口进行相关连接,叫做模块例化.模块例化建立了描述的层次.信号端口可以通过位置或名称关联,端口连接也必须遵循一些规则 ...
- Python学习笔记13_模块
Python学习笔记13_模块 文章目录 Python学习笔记13_模块 1.导入模块和的方法及使用 2.分层的文件系统中常用的包结构 3.OS 模块 4.sys 模块 5.math 模块 6.ran ...
- 【小猫爪】AUTOSAR学习笔记15-BswM模块
[小猫爪]AUTOSAR学习笔记15-BswM模块 前言 1 BswM模块简介 2 BswM功能简介 2.1 模式仲裁 2.2 模式控制 END 前言 上一节介绍了一个非常夸张的EcuM模块,其中 ...
- 【小猫爪】AUTOSAR学习笔记14-EcuM模块
[小猫爪]AUTOSAR学习笔记14-EcuM模块 前言 1 EcuM模块简介 2 EcuM功能简介 2.1 EcuM的状态机 2.2 RUN和POST_RUN 2.3 Startup阶段 1. St ...
- Julia 学习笔记(五) | 模块开发 - 保姆级教程
唠唠闲话 今年参与了 OSPP'22 的 Julia 开源项目,期间学习了 Julia 模块从开发到测试的完整过程.借这个机会,整理这段时间学习到的知识.Julia 在开发提供的工具便捷丰富,且对新人 ...
- 蜂鸟E203学习笔记-取指模块概述(2)
蜂鸟E203学习笔记 前言 1 部分译码 2 分支预测与PC生成 3 请求与响应 4 流水线冲刷 5 阻塞请求 前言 本文取指模块概述后半部分,前半部分跳转至:取指模块概述(1) 1 部分译码 Min ...
- 《Python零基础快乐学习之旅》学习笔记13——模块的设计与应用
文章目录 第13章 模块的设计与应用 13.1 将自建的函数存储在模块中 13.1.1 准备工作 13.1.2 创建函数内容的模块 13.2 应用函数模块 13.2.1 import 语句 13.2. ...
最新文章
- java压缩解压缩类实例[转]
- 精确分割和筛选音频从长的音频中
- 在IIS中部署Asp.net Mvc
- 图书管理系统_目前图书管理系统存在的问题
- wzplayer for android V1.0快出炉了
- php 原生抓取关键词,php获取从百度、谷歌等搜索引擎进入网站关键词的方法
- eclipse导入项目中文乱码
- 中文文本对齐_word排版技巧:如何让词组文字分散对齐
- STM32工作笔记0012---认识老化试验
- (转)主成分分析(Principal components analysis)-最大方差解释
- Linux系统密码忘记教程
- 项目管理(软件开发)之甘特图使用
- 数据库原理与应用实验3--(数据库的简单查询和连接查询)
- AIM Tech Round (Div. 1) C. Electric Charges 二分
- STM32内部参考电压的使用
- xmanager linux 配置,配置Xmanager连接Linux
- 数据页和数据行(翻译)
- layui搜索重置功能
- 同为博客,不同风格 — Hexo 另类搭建
- Java产品:CRM客户关系管理系统
热门文章
- Python中的random模块
- vue 登录模板_不用自己搭建后台模板,使用这个就够了
- scala外部传入时间参数-亲测有效
- R语言应用实战-基于R浅谈SEIR传染病模型以以及马尔萨斯,logistic模型(推导过程和源代码)
- 如何利用弹幕,打造出非凡的观看体验
- C语言输入end时结束程序,给大家一个程序,输入多个字符串以END结束后排序,这个程序运行,即结果都是对的。...
- vb.net 功能f8键事件_笔记本电脑功能键介绍
- 欢迎进入 K同学啊 的博客目录(全站式导航)
- LeetCode-字符串-反转字符串中的单词 II
- 用python读取、处理、另存为csv文件