




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第Python中itertools模块的使用教程详解目录itertools模块的介绍无限迭代器(InfiniteIterators)组合迭代器(CombinatoricIterators)有限迭代器(IteratorsTerminatingontheShortestInputSequence)
itertools模块的介绍
在Python中,迭代器(Iterator)是常用来做惰性序列的对象,只有当迭代到某个值的时候,才会进行计算得出这个值。因此,迭代器可以用来存储无限大的序列,这样我们就不用把他一次性放在内存中,而只在需要的时候进行计算。所以,对于读取大文件或者无线集合,最好是使用迭代器。实际上,Python2的大多数函数都是返回列表等序列,而Python3都已经改进为返回迭代器。
Python的内置模块itertools就是用来操作迭代器的一个模块,包含的函数都是能够创建迭代器来用于for循环或者next()。其中函数主要可以分为三类,分别是无限迭代器,有限迭代器,组合迭代器。
无限迭代器(InfiniteIterators)
这些函数可以生成无限的迭代器,我们主要学习以下三个函数的用法。
count([start=0,step=1])接收两个可选整形参数,第一个指定了迭代开始的值,第二个指定了迭代的步长。此外,start参数默认为0,step参数默认为1,可以根据需要来把这两个指定为其它值,或者使用默认参数。
importitertools
foriinitertools.count(10,2):
print(i)
ifi20:
break
[Running]python-u"e:\pythonee\code\test.py"
22
cycle(iterable)是用一个可迭代对象中的元素来创建一个迭代器,并且复制自己的值,一直无限的重复下去。
importitertools
foriinitertools.cycle("abcd"):
print(i)#具有无限的输出,可以按ctrl+c来停止。
[Running]python-u"e:\pythonee\code\test.py"
b
repeat(elem[,n])是将一个元素重复n遍或者无穷多遍,并返回一个迭代器。
importitertools
foriinitertools.repeat("abcd",5):
print(i)
[Running]python-u"e:\pythonee\code\test.py"
abcd
组合迭代器(CombinatoricIterators)
组合操作包括排列,笛卡儿积,或者一些离散元素的选择,组合迭代器就是产生这样序列的迭代器。我们来看看这几个函数的用法。
product(*iterables,repeat=1)得到的是可迭代对象的笛卡儿积,*iterables参数表示需要多个可迭代对象。这些可迭代对象之间的笛卡儿积,也可以使用for循环来实现,例如product(A,B)与((x,y)forxinAforyinB)就实现一样的功能。
importitertools
foriinduct([1,2,3],[4,5,6]):
print(i)
[Running]python-u"e:\pythonee\code\test.py"
(1,4)
(1,5)
(1,6)
(2,4)
(2,5)
(2,6)
(3,4)
(3,5)
(3,6)
而repeat参数则表示这些可迭代序列重复的次数。例如product(A,repeat=4)与product(A,A,A,A)实现的功能一样。
importitertools
foriinduct('ab','cd',repeat=2):
print(i)
[Running]python-u"e:\pythonee\code\test.py"
('a','c','a','c')
('a','c','a','d')
('a','c','b','c')
('a','c','b','d')
('a','d','a','c')
('a','d','a','d')
('a','d','b','c')
('a','d','b','d')
('b','c','a','c')
('b','c','a','d')
('b','c','b','c')
('b','c','b','d')
('b','d','a','c')
('b','d','a','d')
('b','d','b','c')
('b','d','b','d')
permutations(iterable,r=None)返回的是可迭代元素中的一个排列组合,并且是按顺序返回的,且不包含重复的结果。
importitertools
foriinitertools.permutations('abc'):
print(i)
[Running]python-u"e:\pythonee\code\test.py"
('a','b','c')
('a','c','b')
('b','a','c')
('b','c','a')
('c','a','b')
('c','b','a')
当然,第2个参数默认为None,它表示的是返回元组(tuple)的长度,我们来尝试一下传入第二个参数。
importitertools
foriinitertools.permutations('abc',2):
print(i)
[Running]python-u"e:\pythonee\code\test.py"
('a','b')
('a','c')
('b','a')
('b','c')
('c','a')
('c','b')
combinations(iterable,r)返回的是可迭代对象所有的长度为r的子序列,注意这与前一个函数permutation不同,permutation返回的是排列,而combinations返回的是组合。
importitertools
foriinbinations('1234',2):
print(i)
[Running]python-u"e:\pythonee\code\test.py"
('1','2')
('1','3')
('1','4')
('2','3')
('2','4')
('3','4')
combinations_with_replacement(iterable,r)返回一个可与自身重复的元素组合,用法类似于combinations。
importitertools
foriinbinations_with_replacement('1234',2):
print(i)
[Running]python-u"e:\pythonee\code\test.py"
('1','1')
('1','2')
('1','3')
('1','4')
('2','2')
('2','3')
('2','4')
('3','3')
('3','4')
('4','4')
有限迭代器(IteratorsTerminatingontheShortestInputSequence)
这里的函数有十来个,主要为大家介绍其中几个常用的函数。
chain(*iterables)可以把多个可迭代对象组合起来,形成一个更大的迭代器。
importitertools
foriinitertools.chain('good','bye'):
print(i)
[Running]python-u"e:\pythonee\code\test.py"
e
groupby(iterable,key=None)可以把相邻元素按照key函数分组,并返回相应的key和groupby,如果key函数为None,则只有相同的元素才能放在一组。
importitertools
forkey,groupinitertools.groupby('AaaBBbcCAAa',lambdac:c.upper()):
print(list(group))
[Running]python-u"e:\pythonee\code\test.py"
['A','a','a']
['B','B','b']
['c','C']
['A','A','a']
accumulate(iterable[,func])可以计算出一个迭代器,这个迭代器是由特定的二元函数的累计结果生成的,如果不指定的话,默认函数为求和函数。
importitertools
foriinitertools.accumulate([0,1,0,1,1,2,3,5]):
print(i)
[Running]python
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 龙岩市2025年高中高三毕业班五月教学质量检生物试卷(含答案)
- 探索工业4.0时代机械行业
- 江苏工程职业技术学院《医学科研与设计》2023-2024学年第一学期期末试卷
- 南京视觉艺术职业学院《基础日语(2)》2023-2024学年第一学期期末试卷
- 太原学院《第二外语(日德)(3)》2023-2024学年第二学期期末试卷
- 遂宁能源职业学院《哲学的视野》2023-2024学年第二学期期末试卷
- 江西省九江一中、临川二中重点中学2024-2025学年高三期初测试生物试题含解析
- 唐山幼儿师范高等专科学校《药物合成反应原理》2023-2024学年第一学期期末试卷
- 江苏省泰州市海陵区2025年数学四下期末经典试题含解析
- 平陆县2025届数学三下期末经典试题含解析
- 2025届鄂东南省级示范高中联盟高考英语二模试卷含答案
- 2025购销合同范本下载
- 2024年家政服务职业技能大赛家庭照护赛项决赛试理论题库1000题
- 2025年四川省成都市成华区中考二诊英语试题(含笔试答案无听力音频及原文)
- 2025劳动合同范本下载打印
- (四调)武汉市2025届高中毕业生四月调研考试 地理试卷(含答案)
- 管道试压吹扫方案
- Unit 4 Clothes 单元整体(教学设计)-2024-2025学年人教精通版(2024)英语三年级下册
- 大概念视角下的初中数学函数单元整体教学设计研究与实践
- 《建筑装饰设计收费标准》(2024年版)
- 肾上腺皮质功能减退症的护理
评论
0/150
提交评论