2013-07-12 31 views
0

我想要生成一個向量,告訴我應該如何對列表進行排序,以便將其應用於與對象列表關聯的標籤列表。我知道這是可能的matlab中,有這樣的事情存在於Python?生成一個向量,說明如何在Python中對列表進行排序

一個例子:

假設你有二進制數字list1 = ['10100', '10101', '01010', '00010', '00100'] 列表,並使用list.sort()二進制數字colnames = ["A","B","C","D","E"]我可以代替排序列表1一系列的標籤,但我想知道,分揀怎麼做,然後將該排列應用於標籤列表。

回答

1

是這樣的嗎?

>>> listOne = ['10100', '10101', '01010', '00010', '00100'] 
>>> listTwo = ["A","B","C","D","E"] 
>>> listThree = zip(listOne, listTwo) 
>>> listThree.sort(key = lambda x : x[0]) 
>>> listThree 
[('00010', 'D'), ('00100', 'E'), ('01010', 'C'), ('10100', 'A'), ('10101', 'B')] 
>>> listOneSorted, listTwoSorted = zip(*listThree) 
>>> listOneSorted 
('00010', '00100', '01010', '10100', '10101') 
>>> listTwoSorted 
('D', 'E', 'C', 'A', 'B') 

或者將所有上述內容一起加上一行。

>>> listOneSorted, listTwoSorted = zip(*sorted(zip(listOne, listTwo), key = lambda x : x[0])) 
+1

然後你總是可以做'list1_sorted,labels_sorted = zip(* listThree)' – wflynny

+0

是的。只是補充說。謝謝。 :) –

+0

謝謝,我結束了這樣做!雖然作爲後續,我不知道是否有一種方法來做基數排序相同的想法(我試圖實現的原始算法利用了基數排序是O(n)排序,而排序。()是O(nlogn)。 –

相關問題