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

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

在python中,我们需要通过循环查找和替换。这看起来有点费时。那么有没有什么方法可以像在Perl中那样进行替换呢?

最佳答案

可以使用切片分配:

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

关于python - 是否有像Perl在Python中拼接的内置函数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23181052/

10-12 19:12