Python如何使用for循环实现两个列表对应位置元素相除
错误原因
你写的双层for循环(包括列表推导式里的两层for、单独写的嵌套for循环),执行逻辑是拿lst2里的每一个元素,和lst1里的所有元素挨个算一遍除法,相当于把两个列表的元素做了全量交叉配对,3个元素乘3个元素自然得到9个结果,完全不是按位置配对的逻辑。
另外你写的显式嵌套循环还有额外问题:内外层循环都用x当循环变量,内层的x会直接覆盖外层的x取值,就算逻辑方向对也跑不出正确结果。
正确实现方式
方法1:使用zip()配对对应位置元素(推荐)
zip()可以将多个可迭代对象中对应位置的元素打包为元组,直接遍历就能拿到同索引的配对元素,写法最简洁:
lst1 = [101, 2, 3] lst2 = [69, 0, 0] output_lst = [num2 / num1 for num1, num2 in zip(lst1, lst2)] print(output_lst) # 输出:[0.6831683168316832, 0.0, 0.0]
注意:如果两个列表长度不一致,zip()会默认截断到较短列表的长度,需要严格等长计算的话可以提前加长度校验逻辑。
方法2:按下标索引遍历
如果后续需要用到索引值,可以通过索引取值遍历,逻辑更直白:
output_lst = [] for i in range(len(lst1)): output_lst.append(lst2[i] / lst1[i])
内容的提问来源于stack exchange,提问作者ducttape101
相关产品推荐
相关产品推荐

