生成器表达式笔试题
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个参数,没有任何用处
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)