Python中itertools
一、介绍
itertools 是python的迭代器,itertools提供的工具相当高效且节省内存
使用这些工具,可创建自己定制的迭代器用于高效率循环
1.count(初值=0,步长=1):
1 from itertools import count 2 for i in count(): 3 print i 4 if i > 10: 5 break 6 7 #从0开始循环 8 0 9 1 10 2 11 3 12 4 13 5 14 6 15 7 16 8 17 9 18 10 19 11
2.islice(count(10),5):从 10 开始,输出 5 个元素后结束。islice 的第二个参数控制何时停止迭代。
1 from itertools import count,islice 2 for i in islice(count(10),5): 3 print i 4 5 #从10开始循环迭代5次后退出循环 6 10 7 11 8 12 9 13 10 14
3.cycle:创建某个范围(可以是元组、字符串、列表等),在该范围内反复循环
1 from itertools import cycle 2 count = 0 3 for item in cycle('XYZ'): 4 if count > 7: 5 break 6 print item 7 count = count + 1 8 9 #在xyz之间无限循环 10 X 11 Y 12 Z 13 X 14 Y 15 Z 16 X
4.accumulate(可迭代对象【,函数】):迭代器将返回累计求和结果,或者传入两个参数的话,由传入的函数累积计算的结果。默认设定为相加
1 >>> from itertools import accumulate 2 >>> list(accumulate(range(10))) 3 [0, 1, 3, 6, 10, 15, 21, 28, 36, 45]
相乘
1 from itertools import accumulate 2 import operator 3 >>> list(accumulate(range(1, 6), operator.mul)) 4 [1, 2, 6, 24, 120]
5.chain(可迭代对象):可将一组迭代对象串联起来,形成一个更大的迭代器

1 from itertools import chain 2 for c in chain(['a','b','cd'],['ef',123],'XYZ'): 3 print c 4 5 #输出 6 a 7 b 8 cd 9 ef 10 123 11 X 12 Y 13 Z 14 15 #备注类似于多个list叠加 16 mm = ['a','b','cd'] + ['ef',123] + ['X','Y','Z']
6.groupby:将迭代器中相邻的重复的元素挑出来放在一起
1 from itertools import groupby 2 3 for key, group in groupby('AAABBBCCAAA'): 4 print(key,list(group)) 5 6 #输出 7 # A ['A', 'A', 'A'] 8 # B ['B', 'B', 'B'] 9 # C ['C', 'C'] 10 # A ['A', 'A', 'A']
分类:
Python基础语法
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构