# 练习:
#    已知有列表:
#      L = [2, 3, 5, 7]
#      1) 写一个生成器函数，让此函数能够动态提供数据，数据为原列表的数字的平方加1
#      2) 写一个生成器表达式，让此表达式能够动态提供数据，数据为原列表的数字的平方加1
#      3） 生成一个列表，此列表内的数据是原列表数据的平方加1
     

L = [2, 3, 5, 7]
# 1) 写一个生成器函数，让此函数能够动态提供数据，数据为原列表的数字的平方加1
def mygen(L):
    for x in L:
        yield x ** 2 + 1


gen = mygen(L)
for a in gen:
    print(a)  # 5 10 26 50
print('------------')
# 生成器函数生成的数据已经被取完，再次遍历将拿不到数据
for a in gen:
    print(a)  # 5 10 ....
print('++++++++++++')
# 2) 写一个生成器表达式，让此表达式能够动态提供数据，数据为原列表的数字的平方加1
for a in (x ** 2 + 1 for x in L):
    print(a)
# 3） 生成一个列表，此列表内的数据是原列表数据的平方加1
L = [x ** 2 + 1 for x in L]
print(L)

