2016-12-03 47 views
-1

我想用這個方法的元組排序...排序元組的Python

如果(A1,B1)<(A2,B2),然後A2> A1或(A1 == A2和B2> B1)。

該算法不應該在適當的位置,它預計會接收範圍[0,99]中的數字。

Input: 
[(9, 7), (78, 24), (17, 74), (53, 81), (40, 43), (79, 82), (84, 46), (68, 53), 
(92, 95), (60, 38), (20, 62), (72, 57)] 
Output: 
[(9, 7), (17, 74), (20, 62), (40, 43), (53, 81), (60, 38), (68, 53), (72, 57), 
(78, 24), (79, 82), (84, 46), (92, 95)] 

我想用計數排序的概念,因爲時間複雜度必須是O(N)的,但隨後的名單計數器長度爲100 * 100。這不是一個非常有效的方法。

你有什麼建議嗎?

+0

這應該工作開箱。嘗試'sorted(input_list)'。 – Tobias

回答

1

sorted()內置功能應該只是罰款爲您的情況下,將第一要素,如果第一個元素是兩個項目一樣,它然後比較第二個元素等

在下面例如,simple_list[0][0]simple_list[1][0]和相等(4,4),所以simple_list[0][1]simple_list[1][1](3和5)進行比較:

>>> simple_list = [(4, 3), (4, 5), (1, 2)] 
>>> sorted(simple_list) 
[(1, 2), (4, 3), (4, 5)] 

對於你的情況下,嘗試以下方法:

tuples_list = [(9, 7), (78, 24), (17, 74), (53, 81), (40, 43), (79, 82), (84, 46), (68, 53), (92, 95), (60, 38), (20, 62), (72, 57)] 

sorted_list = sorted(tuples_list) 

輸出:

>>> sorted(tuples_list) 
[(9, 7), (17, 74), (20, 62), (40, 43), (53, 81), (60, 38), (68, 53), (72, 57), (78, 24), (79, 82), (84, 46), (92, 95)]