Python如何从自定义索引位置扩展列表实现指定插入效果
问题原因
Python中列表的切片操作[:1]会返回一个包含原列表前1个元素的独立临时列表,你对这个临时列表调用extend方法,修改的只是这个临时列表,不会对原列表产生任何影响,临时列表在操作完成后会被销毁,因此你两次打印的原列表结果完全一致。
实现方案
要在自定义索引位置批量插入元素(从指定位置扩展数组),推荐使用切片赋值的方式,这是原地修改操作,针对大规模数组的性能表现最优,远优于循环调用insert方法。
语法规则为:目标列表[插入索引:插入索引] = 待插入元素列表
针对你的需求,示例代码如下:
squares = [2**2, 3**2, 4**2, 5**2, 6**2, 7**2, 8**2, 9**2] print(squares) # 在索引1的位置插入元素列表 squares[1:1] = [1] print(squares)
运行输出:
[4, 9, 16, 25, 36, 49, 64, 81]
[4, 1, 9, 16, 25, 36, 49, 64, 81]
其他说明
- 若仅需插入单个元素,也可以使用
insert方法:squares.insert(1, 1),效果和上述示例完全一致 - 若需要一次性插入多个元素,直接将所有待插入元素放到
=右侧的列表中即可,比如要在索引1位置插入三个元素,写法为squares[1:1] = [1, 0, -1],所有元素会按顺序插入到指定位置,原位置后方的元素统一后移
内容的提问来源于stack exchange,提问作者Ahmed El-Ghorory
相关产品推荐
相关产品推荐

