生成器表达式笔试题
def add(n, i): return n + i def test(): for i in range(4): yield i g = test() for n in [1, 10]: g = (add(n, i) for i in g) res = list(g) print(res) # A. res=[10,11,12,13] # B. res=[11,12,13,14] # C. res=[20,21,22,23] # D. res=[21,22,23,24]
假设 for n in [1, 10,20]
分三步
n = 1和 n = 1 和 n = 20 ,i = 0,1,2,3第一步 n = 1
g = (add(1 ,i) for i in g)
但是并不会执行,
如果只有1次循环,tist的输出的结果是1,2,3,4,第二部 n = 10 此时q已经重新赋值
g = (add(10,i) for i in (add(10,i) for i in g))
如果结束只有2个循环,那list的 输出结果是[20,21,22,23],但是要循环3次,并不会结束第三部 n = 20 此时q已经重新赋值
g = (add(20,i) for i in (add(20,i) for i in (add(20,i) for i in g)))第三次循环完成之后,才会执行此时需要套的参数 n = 20 ,List(i) = ,1,2,3 一次性执行完成
相当于n的前2个参数,没有任何用处