我有元組(x, ind)
的一個列表,其中x
是項目,ind
是它在結果列表中的目標指數。該列表以隨機順序排列,但可以假設如果列表中有N
項目,則元組中的ind
的值將在[0,N)
內而沒有重複(即,所有有效索引將只存在一次)。我如何獲得一個列表,其中每個元組的立場是ind
?重排列表不排序
請不要的如何關鍵排序許多現有的答案混淆。
顯然,由ind
鍵排序是容易的,但會有不必要的額外成本O(n*logn)
應該是什麼,因爲有關ind
值的前述假設的O(n)
操作。
所以:
l = [('item1',1), ('item0',0), ('item2',2), ('item4',4), ('item3',3)]
l2 = magic_rearrange(l, key=lambda x: x[1])
print(l2)
應該給:
[('item0',0), ('item1',1), ('item2',2), ('item3',3), ('item4',4)]
這仍然是排序,但沒有'排序'功能。 –