用另一个数组替换部分数组的最佳方法[重复]

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】:

你可以相应地分割你的列表!

也就是说,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]

希望这会有所帮助!

【讨论】:

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特性!

以上是关于用另一个数组替换部分数组的最佳方法[重复]的主要内容,如果未能解决你的问题,请参考以下文章

C#中的字符串替换变音符号[重复]

用另一个模式替换二维数组中的模式

对已旋转 N 次的排序数组进行二进制搜索的最佳方法是啥[重复]

根据字符的字符从句子数组中删除重复句子的最佳方法,空格无关紧要

JavaScript:查找值是不是在数组中的对象内的最佳方法[重复]

为啥我们在尝试用另一个字符串替换它时使用带有“\”的@ [重复]