給定兩個列表(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數組,你可以做一些你想做的事情,查看更新後的答案。 –