2016-11-09 76 views

回答

1

兩年元素的元組共享第一x價值和不同的y值定列表:

t = [(1, 2), (1, 1), (1, 5), (2, 3), (2, 6)] 

您可以根據您的標準進行排序只需通過sorted(或sort)自tuples(名單內)考慮所有元件,同時排序:

>>> sorted(t) 
[(1, 1), (1, 2), (1, 5), (2, 3), (2, 6)] 

即,在第一個匹配值衝突由在SEQ檢查的下一個值解析直到其中一個值小於另一個值(即lexicographical sorting)。

如果找不到解決衝突的值,Python將保留輸入序列中發現的順序。這是排序的另一個特徵,稱爲stability

+0

這是有效的,因爲序列(包括元組)被比較*按字典順序*,即比較第一項,然後第二項,如果這些是相等的,等等[Docs here。](https://docs.python .org/3.5/tutorial/datastructures.html#比較序列和其他類型) –

+0

另外,如果你已經有一個列表中的元組並且不介意修改它,那麼'list.sort()'將會是效率更高一點,因爲它不必首先分配/複製它們到新列表('sorted'將會)。 –

+0

@BenHoyt是的,是的,'排序'返回列表意味着它在交互式解釋器中輸出,而不需要通過按''顯式'打印'或'repr',從而轉化爲更少的複製和粘貼。 :-) –