zoukankan      html  css  js  c++  java
  • 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()
  • 相关阅读:
    .net4.0注册到IIS ,重新注册IIS ,iis注册
    进制转换
    hasOwnProperty实现剔除数组中重复项
    URLStream加载美术资源
    随机排序数组
    post与get的区别
    【转】二进制、八进制、十进制、十六进制之间转换
    数组的sort方法
    【学习篇】JavaScript访问样式表
    【学习篇】JavaScript去除字符串空格
  • 原文地址:https://www.cnblogs.com/jp-mao/p/6292462.html
Copyright © 2011-2022 走看看