zoukankan      html  css  js  c++  java
  • 迭代器

    Iterable:可迭代的

    列表,字典,元组,字符串,集合这些可以循环的都是可迭代的。

    还有一类是生成器(generator),生成器都是可迭代的。

    下面的列子都是可迭代的。

    from collections import Iterable                  
    print(isinstance([],Iterable))
    print(isinstance((),Iterable))
    print(isinstance({},Iterable))
    print(isinstance("abc",Iterable))
    a = (i for i in range(10))
    print(isinstance(a,Iterable))
    def func(max):
        n,a,b = 0,1,2
        if n < max:
            a,b = b,a+b
            yield b
            n += 1
    
    f = func(10)
    print(isinstance(f,Iterable))
    

     

    迭代器:Iterator

    可以被next函数调用并不断返回下一个值的对象称为迭代器。我们目前学的迭代器只有生成器。

    生成器都是可迭代的对象,但是字典,列表,元组,集合等虽然是可迭代的,但并不是生成器。

    from collections import Iterator
    print(isinstance([],Iterator))
    print(isinstance({},Iterator))
    print(isinstance((),Iterator))
    print(isinstance("abc",Iterator))
    print(isinstance(set(),Iterator))
    print(isinstance((i for i in range(10)),Iterator))
    def func(max):
        n,a,b = 0,1,1
        if n < max:
            a,b = b,a+b
            yield b
            n += 1
    
    f = func(15)
    print(isinstance(f,Iterator))
    

    元组,字典,列表等虽然不是迭代器,但是我们可用iter()函数将其变为迭代器。

    print(isinstance(iter([]),Iterator))   
    print(isinstance(iter({}),Iterator))
    print(isinstance(iter(()),Iterator))
    
    a = [1,2,3,4,5]           #用iter()函数将列表a变为迭代器,可用next()函数
    m = iter(a)
    print(next(m))
    print(next(m))     
    

      

     总结:迭代器对象表示的是一个数据流,不知道具体数量,只能用next()函数一个一个输入出来到最后到最后一个数后报错,才能知道这个迭代器有多少元素。

     列表被iter()函数转换为迭代器后,并不能用leng()来查看列表的长度(没转换前可以),只能用next()一个一个唤醒并返回值后才能知道有多少元素。 

     凡是可作用于next的对象都是一个迭代器类型,他们表示一个惰性序列。

     

  • 相关阅读:
    数据库基本操作
    守护线程
    线程使用的场景
    创建多线程
    用正则表达式去截取网页里文字的方法。参数为读取的网页源代码
    文章生成器,Split方法截取字符串。从硬盘读取文件,和向硬盘存储文件参考代码
    winform 阶段学习总结
    Windowform 窗体关联数据库存储,读取图片,参考代码
    windows form窗体应用程序,建一个记事本参考代码,重点是打开,保存,另存为
    js实现相册翻页,滚动,切换,轮播功能
  • 原文地址:https://www.cnblogs.com/Roc-Atlantis/p/8630810.html
Copyright © 2011-2022 走看看