Python itertools的使用

作者: 致Great | 来源:发表于2018-07-05 10:41 被阅读13次

    简介

    Python的内建模块itertools提供了非常有用的用于操作迭代对象的函数。

    无限迭代器

    • count
      count()会创建一个无限的迭代器,所以上述代码会打印出自然数序列,根本停不下来,只能按Ctrl+C退出。
    import itertools
    natuals = itertools.count(1)
    for n in natuals:
        print n
    ...
    1
    2
    3
    ...
    
    • cycle
      cycle()会把传入的一个序列无限重复下去
    import itertools
    cs = itertools.cycle('ABC') # 注意字符串也是序列的一种
    for c in cs:
    ...     print c
    ...
    'A'
    'B'
    'C'
    'A'
    'B'
    'C'
    ...
    
    • repeat
      repeat()负责把一个元素无限重复下去,不过如果提供第二个参数就可以限定重复次数
    ns = itertools.repeat('A', 10)
    for n in ns:
    ...     print n
    ...
    打印10次'A'
    
    • takewhile
      chain()可以把一组迭代对象串联起来,形成一个更大的迭代器
    natuals = itertools.count(1)
    ns = itertools.takewhile(lambda x: x <= 10, natuals)
    for n in ns:
    ...     print n
    ...
    打印出1到10
    

    以上来自廖雪峰网站

    chain方法

    chain()可以把一组迭代对象串联起来,形成一个更大的迭代器:

    这个方法自己平时用的比较多,下面讲一下关于chain的实例

    • 实例 1
    for c in itertools.chain('ABC', 'XYZ'):
        print c
    # 迭代效果:'A' 'B' 'C' 'X' 'Y' 'Z
    
    • 实例 2
    import itertools
    first=[['1','2','3','4','4'],['2','4','2']]
    print(*first)
    x=['abc','def']
    print(*x)
    for i in itertools.chain(*first):
        print(i)
    
    

    输出为

    ['1', '2', '3', '4', '4'] ['2', '4', '2'] =>这里是两个元素
    abc def =>这里是两个元素
    1
    2
    3
    4
    4
    2
    4
    2
    

    *放在一个可迭代对象前面可以将对象拆分成多个单元素,比如first=[['1','2','3','4','4'],['2','4','2']],如果把*放在first前面,就会拆成['1','2','3','4','4']['2','4','2']这两个元素,然后在使用chain方法进行迭代

    相关文章

      网友评论

        本文标题:Python itertools的使用

        本文链接:https://www.haomeiwen.com/subject/fmiuuftx.html