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

Python中用其他列表替换指定位置元素报错,求修正方法

问题分析与解决

错误原因

你的代码中,循环里执行New = New[J[i]]会把New从列表类型覆盖成单个浮点数元素(比如第一次循环后New变成2.9),后续循环再尝试用下标访问New时,自然会触发TypeError: 'float' object is not subscriptable错误——因为浮点数不支持下标操作。

正确实现方式

方法1:普通列表循环(最直观)

通过遍历索引位置和对应的值,直接修改列表指定位置的元素:

New = [1.5, 2.9, 2.7, 6.3, 5.5]
J = [1, 2, 4]
Pe_new = [10, 20, 30]

for pos, val in zip(J, Pe_new):
    New[pos] = val

print(New)

方法2:利用numpy批量赋值(适合大数据场景)

既然你导入了numpy,可以将列表转为numpy数组,直接通过索引批量替换:

import numpy as np

New = np.array([1.5, 2.9, 2.7, 6.3, 5.5])
J = [1, 2, 4]
Pe_new = [10, 20, 30]

New[J] = Pe_new
# 若需要转回普通列表,使用tolist()
print(New.tolist())

两种方法运行后都会输出预期结果:

[1.5, 10, 20, 6.3, 30]

内容的提问来源于stack exchange,提问作者rajunarlikar123

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 20:40:26