用另一个数组替换部分数组的最佳方法

use*_*666 2 python replace list

我正在寻找做类似事情的最pythonic方式:

a = [1,2,3,4,5,6,7,8]
b = ['a','b','c']
c = replace(a,b,2)

c is now [1,2,'a','b','c',6,7,8]
Run Code Online (Sandbox Code Playgroud)

Kee*_*ran 6

你可以相应地切割你的清单!

  • 也就是说,使用ab作为您的初始列表以及要从索引替换的列表s,a[:s]将获得从0到s的所有元素,即([1,2]).

  • a[s+len(b):] 将得到指数的所有项目slen(b),这是([6,7,8])

因此,当您将第一个结果与b连接,然后第二个结果连接时,您可以获得所需的输出!

a[:s]+b+a[s+len(b):]

所以,

>>> a = [1,2,3,4,5,6,7,8]
>>> b = ['a','b','c']
>>> replace=lambda a,b,s:a[:s]+b+a[s+len(b):]
>>> c = replace(a,b,2)
>>> print c
[1, 2, 'a', 'b', 'c', 6, 7, 8]
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助!


tra*_*shy 5

好的,这是另一种简单的方法:(编辑:忘记切片 a 将其复制到 c 中)

a = [1,2,3,4,5,6,7,8]
b = ['a','b','c']
c=a[:]
c[2:5]=b
print(c)
Run Code Online (Sandbox Code Playgroud)

或者,当您想就地更换时:

a = [1,2,3,4,5,6,7,8]
b = ['a','b','c']
a[2:5]=b
print(a)
Run Code Online (Sandbox Code Playgroud)

希望我有所帮助!

  • 您的两个选项当前都替换了 `a` 中的值。如果你想在你的第一个版本中复制列表,你应该说 `c = a[:]` 而不是 `c=a` (2认同)