Python多维列表修改问题:按Cond列表将J对应元素置0未生效
问题解决
错误原因
你的代码存在基础语法错误:需要赋值的位置误用了比较运算符==,而非赋值运算符=。J[0][i]==0仅用于判断该位置元素是否等于0,不会对列表元素做任何修改,因此原列表完全没有变化。
修正方案
基础循环修正版
将比较符号替换为赋值符号即可,同时可以简化布尔值的判断逻辑:
J=[[0, 2, 0, 6, 7, 9, 10]] Cond=[[False, True, False, True, True, True, True]] for i in range(len(J[0])): if Cond[0][i]: # 布尔值可直接作为判断条件,无需写==True J[0][i] = 0 print(J)
执行后输出:
[[0, 0, 0, 0, 0, 0, 0]]
简洁列表推导式版本
如果想让代码更Pythonic,可使用列表推导式直接生成修改后的子列表:
J=[[0, 2, 0, 6, 7, 9, 10]] Cond=[[False, True, False, True, True, True, True]] J[0] = [0 if cond else val for val, cond in zip(J[0], Cond[0])] print(J)
该写法通过zip将对应位置的元素和条件配对,根据条件决定保留原值或置为0,结果与预期一致。
内容的提问来源于stack exchange,提问作者isaacmodi123
相关产品推荐
相关产品推荐

