Python如何批量按指定索引向列表中插入对应元素
错误原因
- 变量名使用了Python内置关键字
list,会覆盖列表类型定义,后续操作可能出现不可预期的错误 - 索引列表
indexes长度和待插入值列表values长度不匹配,无法一一对应 - 循环写法错误,
for index, value in (indexes, values)会直接把两个列表当成遍历对象,而非配对取值,需要用zip()函数对两个列表做对应打包 list.insert()是原地修改方法,无返回值,赋值给result只会得到None- 从前向后插入会导致后续插入位置偏移:比如在索引0插入元素后,原列表所有元素的索引都会+1,原本要插入到对应位置的元素实际插入位置就会出错,需要按索引降序从后往前插入
正确实现
如果要直接传入索引列表和值列表批量插入,可参考如下代码:
# 避免使用list作为变量名 origin_list = ['tuesday', 'wednesday', 'friday', 'sunday'] indexes = [0, 3, 5] values = ['monday', 'thursday', 'saturday'] # 打包索引和值,按索引降序排序后插入,避免位置偏移 for idx, val in sorted(zip(indexes, values), key=lambda x: x[0], reverse=True): origin_list.insert(idx, val) print(origin_list)
运行输出:
['monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday']
内容的提问来源于stack exchange,提问作者mentalist
相关产品推荐
相关产品推荐

