给定两个列表(a和b),我想用列表'b'的三个元素替换列表'a'的三个元素。目前我使用的表达式是这样的:同时替换多个列表元素(Python)
a[0], a[5], a[7] = b[11], b[99], b[2]
,因为我需要有很多不同的阵列我想知道做这样的操作非常频繁,如果有此问题的更紧凑的解决方案(我需要的元素数量取而代之总是3)。我正在考虑类似的东西:
a[0,5,7] = b[11,99,2]
这显然不起作用。
给定两个列表(a和b),我想用列表'b'的三个元素替换列表'a'的三个元素。目前我使用的表达式是这样的:同时替换多个列表元素(Python)
a[0], a[5], a[7] = b[11], b[99], b[2]
,因为我需要有很多不同的阵列我想知道做这样的操作非常频繁,如果有此问题的更紧凑的解决方案(我需要的元素数量取而代之总是3)。我正在考虑类似的东西:
a[0,5,7] = b[11,99,2]
这显然不起作用。
如果您在一个Python列表,你可以做这样的事情:
toReplace = [0,5,7]
targetIndices = [11, 99, 2]
for i,j in zip(toReplace, targetIndices): a[i] = b[j]
如果您在一个numpy的阵列,它的更简单:
a[toReplace] = b[targetIndices]
#i.e, a[[0,5,7]] = b[[11, 99, 2]]
可能有一些更好的解决方案但这是诀窍:
ind1 = [0,5,7]
ind2 = [11,99,2]
for i in range(len(ind1)):
a[ind1[i]]=b[ind2[i]]
当您需要更换相当数量的元素时,这会简化代码,但不会在您只需更换其中几个元素时使用。我已经详细说明了我的问题,我总是需要在给定的时间替换三个元素。 – Istvanb
这简化了代码,当您需要替换相当数量的元素,但不是当您需要替换时他们中的几个。我已经详细说明了我的问题,我总是需要在给定的时间替换三个元素。 – Istvanb
@Istvanb如果你有一个Python列表,那么这就是你所能做的,以防万一你有一个numpy数组,你可以做一些你想做的事情,查看更新后的答案。 –