Подтвердить что ты не робот

Python Разница между отмененными (список) и list.sort(reverse = True)

В чем разница между

mylist = reversed(sorted(mylist))

против

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)

?

4b9b3361

Ответ 1

Вы попали именно в эту разницу. Поскольку 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)]

Ответ 2

Интересный инвариант: list(reversed(sorted(reversed(data)))) == sorted(data, reverse=True).

Другие респонденты верны, что разница имеет отношение к стабильности сортировки, которая сохраняет порядок равных ключей. А также отсортированный() возвращающий список при обратном() возвращает итератор.

Ответ 3

Вы получаете список для sorted(). но reverseed() возвращает итератор