2016-11-09 77 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',从而转化为更少的复制和粘贴。 :-) –