python迭代器Itertools
一无限迭代器:
SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。Iterator | Arguments | Results | Example |
---|---|---|---|
|
start, [step] |
start, start+step, start+2*step, ... |
|
|
p |
p0, p1, ... plast, p0, p1, ... |
|
|
elem [,n] |
elem, elem, elem, ... endlessly or up to n times |
|
- itertools.count(arg1,arg2):arg1:开始位置,arg2:步长

1 #相当于for i in range(10,2) 2 3 #创建迭代器,从10开始步长为2,无结束 4 5 >>> import itertools 6 >>> n = itertools.count(10,2) 7 >>> print(type(n)) 8 <class 'itertools.count'> 9 >>> for i in n: 10 print(i)itertools.count()
- itertools.cycle(itertable)

1 生成一个无限循环可迭代参数的迭代器 2 >>> itertools.cycle('ABCDE') 3 <itertools.cycle object at 0x00000000033576C8> 4 >>> for i in itertools.cycle('ABCDE'): 5 print(i) 6 7 #ABCDEABCDE.......itertools.cycle()
- itertools.repeat(arg1,arg2):arg1:要重复的参数,arg2:重复多少遍

1 >>> s = itertools.repeat('ABC',3) 2 >>> s 3 repeat('ABC', 3) 4 >>> for i in s: 5 print(i) 6 #ABC 7 #ABC 8 #ABCitertools.repeat()
二处理输入序列迭代器
迭代器 | 参数 | 结果 | 例 |
---|---|---|---|
accumulate() |
p [,func] | p0,p0 + p1,p0 + p1 + p2,... | accumulate([1,2,3,4,5]) --> 1 3 610 15 |
chain() |
p,q,... | p0,p1,... plast,q0,q1,... | chain('ABC', 'DEF') --> A B C D EF |
chain.from_iterable() |
迭代 | p0,p1,... plast,q0,q1,... | chain.from_iterable(['ABC','DEF']) --> A B C D E F |
compress() |
数据,选择器 | (d [0]如果s [0]),(d [1]如果s [1]),...... | compress('ABCDEF', [1,0,1,0,1,1])--> A C E F |
dropwhile() |
pred,seq | seq [n],seq [n + 1],当pred失败时开始 | dropwhile(lambda x: x<5,[1,4,6,4,1]) --> 6 4 1 |
filterfalse() |
pred,seq | seq的元素,其中pred(elem)是假的 | filterfalse(lambda x: x%2,range(10)) --> 0 2 4 6 8 |
groupby() |
可迭代的[,关键] | 按键值(v)分组的子迭代器 | |
islice() |
seq,[start,] stop [,step] | 来自seq [start:stop:step]的元素 | islice('ABCDEFG', 2, None) --> CD E F G |
starmap() |
func,seq | func(* seq [0]),func(* seq [1]),... | starmap(pow, [(2,5), (3,2),(10,3)]) --> 32 9 1000 |
takewhile() |
pred,seq | seq [0],seq [1],直到pred失败 | takewhile(lambda x: x<5,[1,4,6,4,1]) --> 1 4 |
tee() |
它,n | it1,it2,... itn将一个迭代器拆分为n | |
zip_longest() |
p,q,... | (p [0],q [0]),(p [1],q [1]),... | zip_longest('ABCD', 'xy',fillvalue='-') --> Ax By C- D- |
- itertools.accumulate(terable ,func )
创建一个迭代器,返回累积的总和,或其他二进制函数的累计结果(通过可选的func参数指定 )。如果提供了func,它应该是两个参数的函数。输入可迭代的 元素可以是可以被接受为func的参数的任何类型,如果输入iterable为空,则输出iterable也将为空。

1 >>> import operator 2 >>> n=itertools.accumulate([1,2,3,4]) 3 >>> for i in n: 4 ... print(i)#1 3 6 10 5 6 >>> n=itertools.accumulate([1,2,3,4],func=operator.mul) 7 >>> for i in n: 8 ... print(i) #1 2 6 24itertools.accumulate()
- itertools.
chain(*iterable)

1 将俩个可迭代对象缝合起来,生成一个迭代器 2 >>> n=itertools.chain('abc','def') 3 >>> for i in n: 4 ... print(i) 5 ... 6 a 7 b 8 c 9 d 10 e 11 fitertools.chain()
- classmethod
chain.
from_iterable
(iterable )

更多精彩