Python中基于一个列表跟踪修改另一个列表元素的报错问题
问题分析与解决方案
错误原因
原代码中,J1=[i for i in J1[0] if i!=0]这行把J1从嵌套列表[[0,0,0,0,0,9,0]]变成了仅包含非0元素的列表[9],随后Ci=Ci[J1]试图用列表作为索引访问另一个列表——而Python列表的索引只能是整数或切片,因此抛出TypeError: list indices must be integers or slices, not list错误。
正确实现代码
要实现“J1元素为0时Ci对应位置设为0,非0时保持Ci原值”的需求,需要遍历两个列表的对应位置进行判断:
J1 = [[0, 0, 0, 0, 0, 9, 0]] Ci = [ 0.0, 8.317333882002454e-05, 0.0, 8.305496451875518e-05, 8.24723410599921e-05, 8.257692992192182e-05, 8.2641447034131e-05 ] # 遍历J1[0]和Ci的对应元素,生成新列表 result = [0 if j == 0 else ci for j, ci in zip(J1[0], Ci)] print(result)
输出结果
运行上述代码后,将得到预期输出:
[0.0, 0.0, 0.0, 0.0, 0.0, 8.257692992192182e-05, 0.0]
内容的提问来源于stack exchange,提问作者bekarhunmain
相关产品推荐
相关产品推荐

