我正在寻找做出类似事情的最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]
答案 0 :(得分:5)
您可以相应地对列表进行切片!
也就是说,a
和b
是您的初始列表,而您想要从索引s
替换的那个,a[:s]
将获得所有元素从0到s之前是([1,2]
)。
a[s+len(b):]
将获取索引s
至len(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]
希望这有帮助!
答案 1 :(得分:1)
好的,这是另一种简单的方法: (编辑:忘记切片将其复制到c)
a = [1,2,3,4,5,6,7,8]
b = ['a','b','c']
c=a[:]
c[2:5]=b
print(c)
或者,当您想要替换时:
a = [1,2,3,4,5,6,7,8]
b = ['a','b','c']
a[2:5]=b
print(a)
希望我帮忙!