python迭代器Itertools 随笔 第1张

一无限迭代器:

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。
Iterator Arguments Results Example

count()

start, [step]

start, start+step, start+2*step, ...

count(10) --> 10 11 12 13 14 ...

cycle()

p

p0, p1, ... plast, p0, p1, ...

cycle('ABCD') --> ...

repeat()

elem [,n]

elem, elem, elem, ... endlessly or up to n times

repeat(10, 3) --> 10 10 10  

  • itertools.count(arg1,arg2):arg1:开始位置,arg2:步长
python迭代器Itertools 随笔 第2张
 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)
python迭代器Itertools 随笔 第4张
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:重复多少遍
python迭代器Itertools 随笔 第6张
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 #ABC
itertools.repeat()

二处理输入序列迭代器

迭代器 参数 结果
accumulate() p [,func] p0,p0 + p1,p0 + p1 + p2,... accumulate([1,2,3,4,5]) --> 610 15
chain() p,q,... p0,p1,... plast,q0,q1,... chain('ABC', 'DEF') --> EF
chain.from_iterable() 迭代 p0,p1,... plast,q0,q1,... chain.from_iterable(['ABC','DEF']) --> F
compress() 数据,选择器 (d [0]如果s [0]),(d [1]如果s [1]),...... compress('ABCDEF', [1,0,1,0,1,1])--> F
dropwhile() pred,seq seq [n],seq [n + 1],当pred失败时开始 dropwhile(lambda x: x<5,[1,4,6,4,1]) --> 1
filterfalse() pred,seq seq的元素,其中pred(elem)是假的 filterfalse(lambda x: x%2,range(10)) --> 8
groupby() 可迭代的[,关键] 按键值(v)分组的子迭代器  
islice() seq,[start,] stop [,step] 来自seq [start:stop:step]的元素 islice('ABCDEFG', 2, None) --> CG
starmap() func,seq func(* seq [0]),func(* seq [1]),... starmap(pow, [(2,5), (3,2),(10,3)]) --> 32 1000
takewhile() pred,seq seq [0],seq [1],直到pred失败 takewhile(lambda x: x<5,[1,4,6,4,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也将为空。

python迭代器Itertools 随笔 第8张
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 24
itertools.accumulate()
  • itertools.chain(*iterable)

 

python迭代器Itertools 随笔 第10张
 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 f
itertools.chain()

 

  • classmethod chain.from_iterableiterable 

 

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄