python itertools


itertools 模块包含了一些创建有效迭代器的函数, 对数据进行循环操作, 可以与for循环语句,及生成器联合使用。

import itertools

1. chain(iter1, iter2, iter3...itern)

    函数功能是将一组迭代器链接起来生成一个新的迭代器, 生成项根据参数的顺序依次生成。

    示例:

        new_iter = itertools.chain([1,2,3,4], [5,6,7,8])

        for i in new_iter:

            print i,

        输出:1 2 3 4 5 6 7 8


2.combination(iterable, r)

    创建一个迭代器, 返回iterable中所有长度为r的子序列, 返回的子序列中的项以iterable中的顺序排序(类似数学中的组合):

    示例:

        from itertools import combination

        new_iter = combination(['a', 'b', 'c'], 2)

       for i in new_iter:

           print i,

       输出:('a', 'b'), ('a', 'c'), ('b', 'c')

3.groupby(iterable, [,keyfuc])

    对迭代器(满足条件的进行分组), 如果唔keyfuc参数则对每一项进行分组.

    示例:

        for i in itertools.groupby([1,2,3,4,5], lambda x: x<5):

            print i

            for j in i[1]:

                print j,

        输出:(True, <itertools._groupby object atd 0x2bb97d0>)

                    1 2 3 4

4.ifilter(predicate, iterable):

    创建一个新的迭代器, 仅生成iterable中predicate(item)为True的项, 如果predicate为None, 则返回iterable中所有为True的项。

5.ifilterfalse(predicate, iterable) 与上述的ifilter相反。

6.imap(fun(or NOne), iter1, iter2, ..iterN)

    创建一个新的迭代器, 生成项fun(i1, i2, i3...iN)参数分别来自迭代器i1,i2,i3..iN, 如果func为None, 则返回(i1,i2,,iN)形式的元组(相当于内置函数zip的功能)。

    示例:

    p = itertools.imap(pow, (2,3,10), (5,2,3))

    for i in p:

        print i,

    输出:32 9 1000

    p = imap(None, [1,2,3], [4,5,6])

    for i in p:print i,

    输出:(1, 4) (2, 5), (3, 6)

    p = imap(zip, [[1,2,3]], [['a', 'b', 'c']])

    for i in p:print i,

    输出:(1, 'a') ('2', 'b')  ('3', 'c')

7.islice(iterable, [start, ], stop, [,step])

   def islice(iterable, *args):

       #islice('abcdef', 2)  ——> a b

       #islice('abcdef', 2, 4)  ——>c d

       #islice('abcdef', 2, None) ——> c d e f

       #islice('abcdef', 0, None, 2) ——>a c e

       s = slice(*args)

       it=iter(xrange(s.start or 0, s.stop or sys.maxint, s.step or 1))

       nextit = next(it) 

       for i, element in enumerate(iterable):

           if i == nextit:

               yield element

               nextit = next(it)

8.izip(iter1, iter2, iter3..iterN)

    创建一个新的迭代器, 此函数生成的值与内置的zip()函数相同

    def izip(*iterables):

        iterables = map(iter, *iterables)

        while iterables:

            yield tuple(map(next,  iterables))

9.permutations(iterable, [,r])

    创建一个迭代器, 返回iterable中所有长度为r的项目序列, 如果省略了r,那么序列的长度与iterable中的项目数量相同。(排列功能)

    itertools.permutations('abc') ——> ab ac ba bc ca cb

记录学些的点点滴滴-青石

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值