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
相关产品推荐
相关产品推荐

