Python中将一个列表元素替换插入到另一列表时报错,求解决方案
嵌套列表替换插入的错误修复
错误原因分析
你的代码报错TypeError: list indices must be integers or slices, not list,问题出在列表推导式J=[J2[i][j] for j in J1]:
j遍历的是J1中的子列表(即[0, 0, 0, 0, 0, 9, 0]),你试图用这个列表作为索引去访问J2的元素,但列表索引只能是整数或切片,因此触发类型错误。
正确实现代码
根据你的预期输出,是要将J2的子列表替换J1子列表的前N个元素(N为J2子列表的长度),以下是两种实现方式:
方式1:切片替换
J1 = [[0, 0, 0, 0, 0, 9, 0]] J2 = [[1, 4]] for i in range(len(J2)): # 复制J1的子列表,避免修改原数据(不需要保留原J1可去掉.copy()) updated_sub = J1[i].copy() # 用J2的子列表替换J1子列表的前len(J2[i])个元素 updated_sub[:len(J2[i])] = J2[i] result = [updated_sub] print(result)
方式2:列表拼接
J1 = [[0, 0, 0, 0, 0, 9, 0]] J2 = [[1, 4]] for i in range(len(J2)): # 将J2子列表与J1子列表的剩余部分拼接 updated_sub = J2[i] + J1[i][len(J2[i]):] result = [updated_sub] print(result)
运行结果
两种代码都会输出你预期的结果:
[[1, 4, 0, 0, 0, 9, 0]]
内容的提问来源于stack exchange,提问作者bekarhunmain
相关产品推荐
相关产品推荐

