Skip to main content
 首页 » 编程设计

python 排序列表列表与决胜局

2025年05月04日23Free-Thinker

使用决胜局对列表列表进行排序的最 Pythonic 方式是什么?

我可以按子列表长度排序(从最长到最短):

>>> l = [['c'], ['a', 'b'], ['b', 'c'], ['a', 'b', 'c']] 
 
>>> list(reversed(sorted(l, key=len))) 
[['a', 'b', 'c'], ['b', 'c'], ['a', 'b'], ['c']] 

但我想在长度相等时保持顺序,所以我想要的输出是:

[['a', 'b', 'c'], ['a', 'b'], ['b', 'c'], ['c']] 

请您参考如下方法:

Timsort (Python 的内置排序算法)是稳定的,这意味着它保持原始顺序 具有相同键的元素。但是,您使用 reversed 函数颠倒了原始顺序。

如果要反转结果列表并保留比较相等的元素的原始顺序,请使用reverse=True:

In [3]: sorted(l, key=len, reverse=True) 
Out[3]: [['a', 'b', 'c'], ['a', 'b'], ['b', 'c'], ['c']]