• itertools模块


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

    无限迭代器

    count()会创建一个无限迭代器

    import itertools
    natuals = itertools.count(1)
    for n in natuals:
        print(n)
    # 打印根本停不下来
    

    cycle()会把传入的一个序列无限重复下去:

    import itertools
    natuals = itertools.cycle('ABC')
    for n in natuals:
        print(n)
    # 也是根本停不下来
    

    repeat()负责把一个元素无限的重复下去,不过如果提供第二个参数就可以限定重复次数:

    import itertools
    natuals = itertools.repeat('A', 10)
    for n in natuals:
        print(n)
    # 打印了十次A

    无限序列只有在for迭代时才会无限地迭代下去,如果只是创建了一个迭代对象,它不会事先把无限个元素生成出来,事实上也不可能在内存中创建无限多个元素。

    无限序列虽然可以无限迭代下去,但是通常我们会通过takewhile()等函数根据条件判断来截取出一个有限的序列:

    import itertools
    natuals = itertools.count(1)
    ns = itertools.takewhile(lambda x: x <= 10, natuals)
    # takewhile接受函数和一个可迭代对象,会将迭代对象的值传入函数,返回False则停止迭代
    for n in ns:
        print(n)
    

    比较有用的几个函数

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

    for c in itertools.chain('ABC', 'XYZ'):
        print(c)
    # 迭代效果:'A' 'B' 'C' 'X' 'Y' 'Z'
    

    groupby()把迭代器中相邻的重复元素跳出来放在一起

  • 相关阅读:
    分享一个在线生成站点地图SiteMap制作工具
    去掉tppabs冗余代码,怎样批量去掉tppabs代码
    js文字无缝滚动
    史上最全的Win8快捷键大全
    原码, 反码, 补码
    Java [Leetcode 136]Single Number
    拉格朗日对偶
    随机森林与GBDT
    GBDT(Gradient Boosting Decision Tree)算法&协同过滤算法
    Java [Leetcode 165]Compare Version Numbers
  • 原文地址:https://www.cnblogs.com/wwg945/p/8977917.html
Copyright © 2020-2023  润新知