Title

生成器表达式笔试题

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个参数,没有任何用处

posted @ 2023-03-09 21:51  哈哈哈哼  阅读(13)  评论(0编辑  收藏  举报