今天刷leetcode的时候,看官方题解,发现一种python的列表插入方法。
即使用切片来实现插入。
现在来比较一下insert()
方法和切片实现插入的区别。
insert()
描述
insert() 函数用于将指定对象插入列表的指定位置。
语法
insert()方法语法:
list.insert(index, obj)
参数
index — 对象 obj 需要插入的索引位置。
obj — 要插入列表中的对象。
返回值
该方法没有返回值,但会在列表指定位置插入对象。
1 2 3 4 5 6 7 8 9
| >>> list = [0,1,2,3,4,5] >>> list.insert(3,'s') >>> list [0, 1, 2, 's', 3, 4, 5]
>>> list = [0,1,2,3,4,5] >>> list.insert(-2,'s') >>> list [0, 1, 2, 3, 's', 4, 5]
|
默认行为是将项目插入给定索引;
索引较高的每个值都移到最后一个位置。
1 2 3 4 5 6 7 8 9
| >>> list = [] >>> list.insert(3,'s') >>> list ['s']
>>> list = [] >>> list.insert(-2,'s') >>> list ['s']
|
如果列表为空,则该项目将正常添加。
如果索引超出范围,则如果索引为正,则该项目将追加到末尾;如果索引为负,则将其追加到开头。
1 2 3 4 5 6 7 8 9
| >>> list = [0,1] >>> list.insert(5,'s') >>> list [0, 1, 's']
>>> list = [0,1] >>> list.insert(-4,'s') >>> list ['s', 0, 1]
|
切片
切片符号的行为完全相同,
在相同索引范围内:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| >>> list=[0,1,2,3,4,5] >>> list[3:3] = 's' >>> list [0, 1, 2, 's', 3, 4, 5]
>>> list=[0,1,2,3,4,5] >>> list[-2:-2] = 's' >>> list [0, 1, 2, 3, 's', 4, 5]
>>> list = [] >>> list[3:3] = 's' >>> list ['s']
>>> list = [] >>> list[-2:-2] = 's' >>> list ['s']
>>> list = [0,1] >>> list[5:5] = 's' >>> list [0, 1, 's']
>>> list = [0,1] >>> list[-4:-4] = 's' >>> list ['s', 0, 1]
>>> list = [0,1,2,3,4,5] >>> list.__setitem__(slice(3,3),['s']) >>> list [0, 1, 2, 's', 3, 4, 5]
|
python有各种神奇的操作,需要多学学其他大佬们写python的方式,不能闭门造车。
在写代码的时候,我发现了insert()
和使用切片进行插入的区别了。
1 2 3 4 5 6 7 8 9 10 11
| 使用insert() >>> res = [] >>> res.insert(0,[1,2]) >>> res [[1, 2]]
使用切片进行插入 >>> res = [] >>> res[0:0] = [1,2] >>> res [1, 2]
|
插入一个列表的时候,使用切片,会将列表拆开,而使用insert()
插入的是列表。