同时替换多个列表元素(Python)

时间:2017-10-28 20:28:54

标签: python-3.x list

鉴于两个列表(a和b),我想替换列表中的三个元素' a'列表中的三个元素' b'。目前我正在使用这样的表达式:

a[0], a[5], a[7] = b[11], b[99], b[2]

由于我需要经常使用许多不同的阵列进行此类操作,我想知道是否有更紧凑的解决方案来解决这个问题(我需要替换的元素数量总是为3)。我在考虑类似的事情:

a[0,5,7] = b[11,99,2]

这显然不起作用。

2 个答案:

答案 0 :(得分:1)

如果你有一个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]]

答案 1 :(得分:1)

可能有一些更好的解决方案,但这样做可以解决问题:

ind1 = [0,5,7] 
ind2 = [11,99,2]

for i in range(len(ind1)):
    a[ind1[i]]=b[ind2[i]]
相关问题