Python:根据Cond列表将J列表对应True位置元素置0的问题
问题排查与解决
你的代码核心错误是赋值时误用了比较运算符:循环中的J[i]==0是双等号,这是用来判断两个值是否相等的比较操作,完全不会修改J列表里的元素。要修改列表元素,必须使用单等号=来完成赋值。
修正后的代码
J=[0, 2, 0, 6, 7, 9, 10] Cond=[False, True, False, True, True, True, True] for i in range(len(J)): if Cond[i]: # 无需写Cond[i]==True,直接判断布尔值更简洁 J[i] = 0 # 改用单等号完成赋值 print(J)
运行这段代码后,输出就是你期望的:
[0, 0, 0, 0, 0, 0, 0]
更Pythonic的写法
如果想让代码更简洁,可以用列表推导式一行完成操作,避免手动处理索引:
J = [0 if cond else num for num, cond in zip(J, Cond)] print(J)
内容的提问来源于stack exchange,提问作者isaacmodi123
相关产品推荐
相关产品推荐

