我有 2 個串列。第一個串列是值串列values,第二個串列是索引串列position。
position = [1, 0 ,0 ]
values = [2, 6, 1]
output: [] # empty list since all elements are removed
我想要做的是,迭代position串列并洗掉串列中該位置的相應元素values。
- 因此,在第一遍中,它將洗掉
values[position[0]],即6,然后結果values陣列也將更改為[2, 1]。 - 在第二遍中,它將洗掉
values[position[1]],即2,結果values陣列將變為[1]。 - 最后它將洗掉
1.
這是我在 O(n**2) 中的代碼。任何優化表示贊賞。謝謝!
position = [1, 0 ,0 ]
values = [2, 6, 1]
for i in range(len(position)):
while len(values) > 0:
x = values[position[i]]
print(x)
values.remove(x)
break
uj5u.com熱心網友回復:
第一個注意事項:您的 while 回圈是無用的,因為您在第一次迭代時就中斷了。你的回圈嚴格等同于
for i in range(len(position)):
x = values[position[i]]
print(x)
values.remove(x)
然后:迭代值而不是索引position,并同時用于list.pop獲取和洗掉
result = []
for pos in position:
result.append(values.pop(pos))
print(result) # [6, 2, 1]
uj5u.com熱心網友回復:
為此,您可以使用該.pop()方法。
position = [1, 0 ,0 ]
values = [2, 6, 1]
for idx in position:
values.pop(idx)
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/369670.html
下一篇:如何從另一個整數修改一個整數的位
