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

  

 

posted @ 2018-09-26 22:00  ...绿茵  阅读(130)  评论(0编辑  收藏  举报
1