我遇到了無法交換陣列中的值的問題。我有2個陣列,一個充滿了零和的人,例如:disp = [[0.], [0.], [0.], [1.], [1.], [1.], [1.], [0.], [0.], [0.]]和另一個充滿了價值,我想在其中的位置來實作的人都在DISP,例如:to_replace_at_1 = [[17.17], [0.], [-7.0] , [7.0]]。
結果應該是這樣的:disp = [[0.], [0.], [0.], [17.17], [0.], [-7.0], [7.0], [0.], [0.], [0.]]。
我試過這個:
for i in range(len(disp)):
vector = disp[i]
for value in vector:
if value == 1.0:
for e in to_replace_at_1:
disp[i] = to_replace_at_1[e]
但它最終崩潰了。我應該嘗試什么?我該如何解決這個問題?
uj5u.com熱心網友回復:
一種方法:
iterator = iter(to_replace_at_1)
[x if x[0] != 1 else next(iterator) for x in disp]
uj5u.com熱心網友回復:
在您的情況下,它崩潰了,disp[i] = to_replace_at_1[e]因為e您的情況是一個串列。你的邏輯實作很好。
我認為這不是最好的方法,但我可以按照代碼為您提供一個可行的解決方案。
j = 0
for i in range(len(disp)):
vector = disp[i]
for value in vector:
if value == 1.0:
disp[i] = to_replace_at_1[j]
j = 1
uj5u.com熱心網友回復:
這將做:
disp = [[0.], [0.], [0.], [1.], [1.], [1.], [1.], [0.], [0.], [0.]]
to_replace_at_1 = [[17.17], [0.], [-7.0] , [7.0]]
idx = 0
for i, val in enumerate(disp):
if val[0] == 1.0:
disp[i] = to_replace_at_1[idx]
idx = 1
print(disp)
>>> [[0.0], [0.0], [0.0], [17.17], [0.0], [-7.0], [7.0], [0.0], [0.0], [0.0]]
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/402821.html
標籤:
