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

Python中按另一列表索引放置元素报错及预期输出

问题解决:根据索引列表生成新数组的错误修复

问题场景

现有两个二维列表Cb_max1和J1,需求是根据J1中的索引值,从Cb_max1中取对应元素生成新列表,原运行代码报错,相关信息如下:

原代码

Cb_max1 = [[0.0009847628716281426, 0.0009847628716281426, 0.0009800221856714917]]
J1=[[1, 4, 0, 0, 0, 9, 0]]

for i in range(0,len(J1[0])):
    Cb_max1=Cb_max1[0][J1[0][i]]
    print(Cb_max1)

错误信息

in <module>
    Cb_max1=Cb_max1[0][J1[0][i]]

TypeError: 'float' object is not subscriptable

预期输出

[[0.0009847628716281426, 0.0009847628716281426, 0, 0, 0, 0.0009800221856714917, 0]]

错误原因

循环中第一次执行Cb_max1=Cb_max1[0][J1[0][i]]时,Cb_max1被重新赋值为一个float类型的单个数值,而非原来的二维列表。后续循环再尝试访问Cb_max1[0]时,自然会报错——float类型不支持下标访问。

修复后的代码

Cb_max1 = [[0.0009847628716281426, 0.0009847628716281426, 0.0009800221856714917]]
J1 = [[1, 4, 0, 0, 0, 9, 0]]

# 提取原始数据列表,避免修改原变量
source = Cb_max1[0]
result_list = []

# 遍历J1中的每个索引
for idx in J1[0]:
    # 索引有效则取对应值,无效则填0
    if 0 <= idx < len(source):
        result_list.append(source[idx])
    else:
        result_list.append(0.0)

# 包装成二维列表,匹配预期输出格式
final_result = [result_list]
print(final_result)

运行结果

执行上述代码后,输出与预期完全一致:

[[0.0009847628716281426, 0.0009847628716281426, 0, 0, 0, 0.0009800221856714917, 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:33:22