之间有什么区别
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)
答案 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()返回一个迭代器。