-
先看一个列表推导式
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__()了
不管怎么用,生成器都只能顺序用一次,用一圈就不能用了
-
参考文献
Python生成器表达式
猜你喜欢
转载自blog.csdn.net/BBJG_001/article/details/104745245
今日推荐
周排行