Python中按列表指定位置赋值导致长度异常的解决方法
问题解决:用索引赋值替代插入操作
你的问题根源在于使用了insert()方法——这个方法是在指定位置新增元素,每次调用都会让列表长度加1,循环10次后,原本长度为10的list3就被扩展成了20。
要实现「把list1的元素作为位置,将list2对应元素赋值给list3」的需求,直接通过索引赋值即可,不需要插入操作。修改后的代码如下:
list1 = [0, 1, 2, 3, 4, 6, 9, 5, 7, 8] list2 = [0, 1, 2, 2, 2, 2, 2, 3, 4, 5] list3 = [0]*len(list1) for i in range(len(list1)): # 通过索引直接替换原有位置的元素,而非插入新元素 list3[list1[i]] = list2[i] print(list3) # 输出:[0, 1, 2, 2, 2, 3, 2, 4, 5, 2]
循环结束后,list3的长度保持为10,且每个位置的值都符合预期。
内容的提问来源于stack exchange,提问作者Iago Álvarez
相关产品推荐
相关产品推荐

