• 13、迭代器与生成器


    1、迭代器

      一个记住遍历的位置的对象

      迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束,只能前进不能后退

      迭代器有两个方法:iter():创建迭代器对象和next():遍历迭代器输出下一个元素

    l = [1,2,3,4]
    li = iter(l)   #创建迭代器对象
    print(next(li)) #输出迭代器的下一个元素 1
    print(next(li)) #输出迭代器的下一个元素 2
    print(next(li)) #输出迭代器的下一个元素 3
    print(next(li)) #输出迭代器的下一个元素 4
    print(next(li)) #输出迭代器的下一个元素 StopIteration
    #迭代器对象可以使用常规for语句进行遍历:
    l = [1,2,3,4]
    it = iter(l) # 创建迭代器对象
    for x in it:
        print(x,end=" ")

    2、生成器

      使用了yield函数称为生成器

      生成器是一个返回迭代器的函数,生成器就是一个迭代器,只能用于迭代操作

      在调用生成器运行的过程中,每次遇到 yield 时函数会暂停并保存当前所有的运行信息,返回yield的值。并在下一次执行 next()方法时从当前位置继续运行。

    import sys
    
    def fibonacci(n): # 生成器函数 - 斐波那契
        a, b, counter = 0, 1, 0
        while True:
            if (counter > n):
                return
            yield a
            a, b = b, a + b
            counter += 1
    f = fibonacci(10) # f 是一个迭代器,由生成器返回生成
    
    while True:
        try:
            print (next(f), end=" ") #0 1 1 2 3 5 8 13 21 34 55 
        except StopIteration:
            sys.exit()
  • 相关阅读:
    【转】ios输入框被键盘挡住的解决办法
    【转】操作系统Unix、Windows、Mac OS、Linux的故事
    mac 下删除非空文件夹
    解决Win7 64bit + VS2013 使用opencv时出现提“应用程序无法正常启动(0xc000007b)”错误
    图的邻接表表示
    图的邻接矩阵表示
    并查集
    05-树9 Huffman Codes及基本操作
    05-树7 堆中的路径
    堆的操作集
  • 原文地址:https://www.cnblogs.com/jp-mao/p/6292462.html
Copyright © 2020-2023  润新知