是否有像Perl在Python中拼接的内置函数?

时间:2014-04-20 10:31:30

标签: python list

我试图找到一种方法来查找/替换列表中的元素而不是使用迭代,就像在perl中有一个函数splice()。

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

在python中我们需要经历循环并找到并替换。这看起来有点耗时。那么有没有像我们在Perl中那样替换的方法?

1 个答案:

答案 0 :(得分:8)

您可以使用切片分配:

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() function支持的所有相同用例。