Python中有没有类似Perl中splice的内置函数?

7 投票
1 回答
3278 浏览
提问于 2025-04-18 03:29

我想找一种方法,可以在列表中查找和替换元素,而不是像在Perl中使用splice()那样通过循环来实现。

@a = splice(@list,2,3,(1,1,1));
print @a;

在Python中,我们需要通过循环来查找和替换。这看起来有点耗时间。那么有没有像在Perl中那样的替换方法呢?

1 个回答

10

你可以使用切片赋值:

somelist[2:5] = [1, 1, 1]

这段代码会把列表中的第2、3和4个元素替换成一个新的列表。这个新的列表可以比原来的短,也可以是空的。你要替换的部分也可以是长度为0的,这样就相当于把右边的内容插入到目标列表里。

示例:

>>> a = [1, 2, 3]
>>> a[1:1] = [4, 5, 6]
>>> a
[1, 4, 5, 6, 2, 3]
>>> b = ['foo', 'bar', 'baz', 'spam', 'ham', 'eggs']
>>> b[2:5] = [1, 1, 1]
>>> b
['foo', 'bar', 1, 1, 1, 'eggs']
>>> c = [42, 38, 22]
>>> c[:2] = []
>>> c
[22]

切片赋值可以实现和Perl中的splice()函数一样的功能。

撰写回答