zoukankan      html  css  js  c++  java
  • Python的内置模块itertools

    1.itertools

      Python的内建模块提供了非常有用的用于操作迭代对象的函数。并且itertools相当高效且节省内存。

    2.itertools模块中的方法

    count(初值=0, 步长=1)

    count 迭代器会返回从传入的起始参数开始的均匀间隔的数值。count 也可以接收指定的步长参数。

    from itertools import count
    for i in count(10): #从10开始无限循环,默认步长等于1
        if i > 20:
            break
        else:
            print(i)
    

    islice() 

    返回一个迭代器,该迭代器的next()方法从可迭代的如果指定start,则跳过前面的所有元素;否则,start默认值为零。

    Step默认为1。如果step指定为另一个值,确定有多少个值在连续调用之间跳过。

    工作方式类似于列表中的slice(),但是返回一个迭代器。

    from itertools import islice,count
    
    #方式一:islice(迭代对象, 迭代数量)
    
    for i in islice(count(10), 5):
        print(i)
    
    for i in islice('abcdefghigk', 5):
        print(i)
    
    #方式二:islice(迭代对象, 开始索引,结束索引,步长)
    #步长不写默认为1
    
    s=islice('abcdefghigk',1,4,2)
    a=list(s)
    print(a)
    

    cycle(可迭代对象) 

    从可迭代对象中返回元素,直到它被耗尽。然后无限地重复这个序列。

    from itertools import cycle
    count = 0
    for item in cycle('XYZ'):
        if count > 7:
            break
        print(item)
        count += 1  

    repeat()

    把一个元素无限重复下去,不过如果提供第二个参数就可以限定重复次数

    from itertools import repeat
    
    ns = itertools.repeat('AbC', 3)
    for n in ns:
        print(n)
    

    takewhile(判断条件,迭代对象)

    通过判断条件,终止迭代

    natuals = itertools.count(1)
    ns = itertools.takewhile(lambda x: x <= 10, natuals)
    s=list(ns)
    print(s)
    

    chain(可迭代对象,可迭代对象,……)

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

     个人感觉没什么卵用。

    first=[['1','2','3','4','4'],['2','4','2']]
    print(*first)
    x=['abc','def']
    print(*x)
    for i in itertools.chain(*first,*x):
        print(i)
    

      

     

  • 相关阅读:
    积分图像
    [悟] 因上努力,果上随缘(转)
    不要走的太匆忙( 转)
    一个程序员如何快速赚到一百万?(转)
    vi文字处理器
    Linux常用命令
    Hadoop之MapReduce
    Hadoop全分布模式操作
    Hadoop之HDFS
    Hadoop生态系统
  • 原文地址:https://www.cnblogs.com/mainstream/p/11544134.html
Copyright © 2011-2022 走看看