用另一个数组替换部分数组的最佳方法[重复]
Posted
技术标签:
【中文标题】用另一个数组替换部分数组的最佳方法[重复]【英文标题】:Best way to replace part of array with another array [duplicate] 【发布时间】:2017-08-27 10:06:08 【问题描述】:我正在寻找最 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]
【问题讨论】:
你需要替换索引2的数组部分吗?那是第三个参数? 你的猜测是什么?您是否搜索过可能对这项任务有用的适当函数或方法? 【参考方案1】:你可以相应地分割你的列表!
也就是说,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]
希望这会有所帮助!
【讨论】:
pythonic 答案:)【参考方案2】:好的,这是另一种简单的方法: (编辑:忘记切片 a 以将其复制到 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)
希望我能帮上忙!
【讨论】:
这个替换原来的列表!!甚至a
也受到影响!
您的两个选项当前都替换了a
中的值。如果您想在第一个版本中复制列表,您应该说 c = a[:]
而不是 c=a
@Keiwan +1 使用a=a[:]
是的,我刚刚注意到并进行了编辑。谢谢@Keiwan
在我看来这是一个非常棘手的python特性!以上是关于用另一个数组替换部分数组的最佳方法[重复]的主要内容,如果未能解决你的问题,请参考以下文章
对已旋转 N 次的排序数组进行二进制搜索的最佳方法是啥[重复]
根据字符的字符从句子数组中删除重复句子的最佳方法,空格无关紧要