zoukankan      html  css  js  c++  java
  • 生成器表达式

    # ### 生成器
    '''
    #生成器本质是迭代器,允许自定义逻辑的迭代器
    
    #迭代器和生成器区别:
    	迭代器本身是系统内置的.重写不了.而生成器是用户自定义的,可以重写迭代逻辑
    
    #生成器可以用两种方式创建:
        (1)生成器表达式  (里面是推导式,外面用圆括号)
        (2)生成器函数    (用def定义,里面含有yield)
    '''
    
    # (1) 生成器表达式 generator
    # [1,2,3,4] => [4,8,12,16]
    # i << 2 i乘以2的2次幂
    gen = (i << 2 for i in range(1,5))
    print(gen)
    from collections import Iterator,Iterable
    print(isinstance(gen,Iterator))
    
    # (1)使用next进行调用生成器
    res = next(gen)
    print(res)
    res = next(gen)
    print(res)
    res = next(gen)
    print(res)
    res = next(gen)
    print(res)
    # res = next(gen) 小心越界
    # print(res)
    
    
    # (2) 使用for循环调用生成器
    gen = (i << 2 for i in range(1,5))
    for i in gen:
    	print(i)
    
    # (3) 用for 和next 搭配调用生成器
    gen = (i << 2 for i in range(1,5))
    for i in range(2):
    	res = next(gen)
    	print(res)
    

      

  • 相关阅读:
    最小顶点覆盖,最大独立集,最小边覆盖
    Security Badges
    异常
    List和Set
    数据结构
    Collection集合
    Excel序号递增
    VM虚拟机桥接模式无法联网解决办法
    mybatis-Plus方法指定更新的字段
    maven项目 导出相关依赖包到指定文件夹
  • 原文地址:https://www.cnblogs.com/huangjiangyong/p/10907992.html
Copyright © 2011-2022 走看看