我试图找到一种方法来查找/替换列表中的元素而不是使用迭代,就像在perl中有一个函数splice()。
@a = splice(@list,2,3,(1,1,1));
print @a;
在python中我们需要经历循环并找到并替换。这看起来有点耗时。那么有没有像我们在Perl中那样替换的方法?
答案 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支持的所有相同用例。