模块 itertools
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)

浙公网安备 33010602011771号