Python如何合并两个非嵌套for循环得到正确的d3计算结果?
代码问题分析与修复
错误根源
你的代码中两个循环完全独立,第一个计算d1的循环运行结束后,d1仅保留了最后一次迭代的结果x[2]-3=0,没有存储所有x[i]-z的计算值。第二个循环计算d3时每次都用固定的0和d2相加,最终得到错误结果[1,2,3]。
修复方案
方案1:贴合原逻辑修改(最易理解)
预先将所有d1的计算结果存入列表,第二个循环对应位置取值相加即可:
x = [1,2,3] z = 3 y = [4,5,6] d = [] # 存储所有d1计算结果 d1_list = [] for i in range(3): d1_list.append(x[i] - z) for j in range(3): d2 = y[j] - z d3 = d1_list[j] + d2 d.append(d3) for i in d : print(i)
方案2:更简洁的Python写法
直接遍历两个列表的对应元素计算,省去单独循环存储的步骤:
x = [1,2,3] z = 3 y = [4,5,6] d = [xi + yi - 2*z for xi, yi in zip(x, y)] for i in d: print(i)
两种方案运行后都会输出你期望的结果:
-1 1 3
内容的提问来源于stack exchange,提问作者sql_nerd
相关产品推荐
相关产品推荐

