生成器只能执行一次循环

def func():
    for i in range(4):
        yield i
g = func()
# arr1、arr2 只有在用到的时候才会取值,默认是没有值
arr1 = (i for i in g)
arr2 = (i for i in arr1)
print(arr1)
# <generator object <genexpr> at 0x000002254DE5A2A0>
print(arr2)
# <generator object <genexpr> at 0x000002254DE5A318>
print(list(arr1))
# [0, 1, 2, 3]
# 如果不执行list(arr1)则list(arr2) = [0, 1, 2, 3]
print(list(arr2))
# []
def func():
    for i in range(4):
        yield i
g = func()
# arr1、arr2 只有在用到的时候才会取值,默认是没有值
arr1 = (i for i in g)
arr2 = (i for i in arr1)
print(arr1)
# <generator object <genexpr> at 0x000002254DE5A2A0>
print(arr2)
# <generator object <genexpr> at 0x000002254DE5A318>
# 如果不执行list(arr1)则list(arr2) = [0, 1, 2, 3]
print(list(arr2))
# [0, 1, 2, 3]

猜你喜欢

转载自blog.csdn.net/bus_lupe/article/details/84578021
今日推荐