10.7、itertools
1、无线迭代器 count()、cycle()、repeat()
import itertools natuals=itertools.count(1) #从1开始无限叠加 for n in natuals: print(n)
import itertools cs=itertools.cycle('ABC') #无限循环ABC for c in cs: print(c)
通过takewhile()
等函数根据条件判断来截取出一个有限的序列
natuals=itertools.count(2) ns=itertools.takewhile(lambda x:x<10,natuals) list(ns) [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
chain()
chain()
可以把一组迭代对象串联起来,形成一个更大的迭代器:
groupby()
groupby()
把迭代器中相邻的重复元素挑出来放在一起:
return sum([(-1) ** (n - 1) * 4 / (n * 2 - 1) for n in itertools.takewhile(lambda i: i <= N, itertools.count(1))])