Python生成器表达式

原文地址

  • 先看一个列表推导式

    l = [i for i in range(10)]
    print(l)
    # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    
  • 生成器表达式

    #生成器表达式
    g1 = (i for i in range(10))
    print(g1)
    # <generator object <genexpr> at 0x00000228C7A824C8>
    for i in  g1:
        print(i, end=' ')
    print()
    # 0 1 2 3 4 5 6 7 8 9
    # 注意这时候生成器g1已经被用完了,就是指针已经走到了末尾,无法再__next__()了
    

    从内部语法上,生成器表达式跟列表推导式的语法是一样的,只是在外部,列表推导式使用中括号[]来接受,生成器表达式使用小括号来接收

  • 通过list()方法可以将生成器转换成列表

    g2 = (i for i in range(10, 20))
    print(g2)
    # <generator object <genexpr> at 0x00000228C7A824C8>
    print(list(g2))
    # [10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
    # 注意这时候生成器g2已经被用完了,就是指针已经走到了末尾,无法再__next__()了
    

    不管怎么用,生成器都只能顺序用一次,用一圈就不能用了

  • 参考文献

    生成器,内置函数Ⅰ

发布了157 篇原创文章 · 获赞 163 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/BBJG_001/article/details/104745245
今日推荐