python reverse(list)和list.sort之间的区别(reverse = True)

时间:2012-04-02 00:46:08

标签: python sorting

之间有什么区别
mylist = reversed(sorted(mylist))

VS

mylist = sorted(mylist, reverse=True)

为什么要使用另一个?

如何在多列上进行稳定排序,例如

mylist.sort(key=itemgetter(1))
mylist.sort(key=itemgetter(0))
mylist.reverse()

相同
mylist.sort(key=itemgetter(1), reverse=True)
mylist.sort(key=itemgetter(0), reverse=True)

3 个答案:

答案 0 :(得分:20)

你已经确切地 了。由于Timsort是稳定的,因此排序反向排序将使未排序的元素按相反的顺序排列。

>>> s = ((2, 3, 4), (1, 2, 3), (1, 2, 2))
>>> sorted(s, key=operator.itemgetter(0, 1), reverse=True)
[(2, 3, 4), (1, 2, 3), (1, 2, 2)]
>>> list(reversed(sorted(s, key=operator.itemgetter(0, 1))))
[(2, 3, 4), (1, 2, 2), (1, 2, 3)]

答案 1 :(得分:2)

您获得sorted()的列表,但reversed()返回迭代器

答案 2 :(得分:1)

有趣的不变量是:list(reversed(sorted(reversed(data)))) == sorted(data, reverse=True)

其他受访者认为差异与排序稳定性有关,而排序稳定性保留了相等键的顺序。并且 sorted()返回一个列表,而 reversed()返回一个迭代器。