zoukankan      html  css  js  c++  java
  • 生成器1

    生成器是一种特殊的迭代器。

    用生成器实现斐波那契数列:

    from collections import Iterator, Iterable
    
    
    def create_nums(num):
        a, b = 1, 1
        cnt = 0
    
        while cnt < num:
            yield a
            a, b = b, a + b
            cnt += 1
    
    
    nums_generator = create_nums(10)
    
    ret = iter(nums_generator)
    print(ret)  # <generator object create_nums at 0x00000000006ACD00>
    print(next(ret))  # 1
    print(isinstance(nums_generator, Iterable))  # True
    print(isinstance(nums_generator, Iterator))  # True
    
    for i in range(15):
        next(nums_generator)  # 抛出异常StopIteration

    可以看到对一个生成器调用iter方法,返回一个生成器对象ret(即可迭代对象),对ret调用next返回一个生成的值1,这两个步骤说明了生成器符合迭代器的特性(即对可迭代对象调用iter()返回一个迭代器,对迭代器调用next返回一个迭代出来的值)

    迭代器是一个类中实现了__iter__和__next__方法,生成器没有明显实现这两个方法,但是具有这两种方法的逻辑,所以说它既是迭代器,又有特殊性。

  • 相关阅读:
    批量ping工具fping
    图形文件元数据管理工具exiv2
    JPG图片EXIF信息提取工具exif
    网络图片嗅探工具driftnet
    复杂密码生成工具apg
    前端面试题目准备
    JS中同步与异步的理解
    angular初体验
    媒体查询的两种方式
    CSS3多列布局
  • 原文地址:https://www.cnblogs.com/olivertian/p/12603590.html
Copyright © 2011-2022 走看看