You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 19:52:08