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']
View Code
复制代码

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']
复制代码

 

posted @   几何0814  阅读(271)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示