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__方法,生成器没有明显实现这两个方法,但是具有这两种方法的逻辑,所以说它既是迭代器,又有特殊性。

  • 相关阅读:
    Amazon Route 53
    监控应用程序负载均衡器ALB
    DynamoDB 流
    DynamoDB 中的限制
    Amazon SNS 消息属性
    关于基于 SAML 2.0 的联合身份验证
    Amazon EBS 性能提示
    Laravel5.1注册中间件的三种场景
    编译LNMP环境
    傻瓜式搭建LAMP环境
  • 原文地址:https://www.cnblogs.com/olivertian/p/12603590.html
Copyright © 2011-2022 走看看