itertools模块包含创建有效迭代器的函数, 可以用各种方式对数据进行循环操作,此模块中的所有函数返回的迭代器都可以与for循环语句以及其他包含迭代器(生成器的函数表达式)联合使用
1 . chain(iter1 , iter2, ....itern)
定义: 此函数创建一个新迭代器来将所有的迭代器链接起来, 返回的迭代器从iter1开始生成项,iter1被用完, 然后从iter2生成项, 这一过程持续到itern所有的项被用完.
代码实例:
from itertools import chain li = [11,22,33] li1 = [55,22] ret = chain(li,li1) for i in ret: print(i) #结果是 11,22,33,55,22
2 . chain.from_iterable(iterables):
定义: 一个备用链构造函数, 其中的iterables是一个迭代变量, 生成迭代序列, 此操作的结果和以下生成器代码片段生成的结果相同:
代码实例:
from itertools import chain test = chain.from_iterable('ABCDE') print(test) ret = test.__next__() print(ret) print('*'*23) def f(iterables): for x in iterables: for y in x: yield y test = f('ANCDD') ret = test.__next__() ret1 = test.__next__() print(ret,ret1)
结果:
<itertools.chain object at 0x000001AFBF508A90> A *********************** A N
3 combinations(iterable, r)
定义: 创建一个迭代器, 返回iterable中所有长度为r的子序列,返回的子序列中的项按输入的iterable中的顺序排序:
from itertools import combinations test = combinations([1,2,3,4],2) print(test) for el in test: print(el)
4 count([n]):
定义:创建一个迭代器,生成从n开始的连续整数,如果忽略n,则从零开始计算
from itertools import count ret = count(4) print(ret) print(ret.__next__()) print(ret.__next__())
5 dropwhile(predicate, iterable):
定义: 创建一个迭代器, 只要函数predicate为ture, 就丢弃iterable中的项,如果返回false.\,就会生成iterable中的项和所有后续项.
6 filterfalse(predicate, iterable)
定义: 创建一个迭代器,仅生成iterable中predicate为false的项, 如果predicate为none,将放回iterable中所有计算为false的项
import itertools ret = itertools.filterfalse(lambda x:x%2, range(10)) for i in ret: print(i)