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 @ 2022-08-27 15:33  几何0814  阅读(266)  评论(0编辑  收藏  举报