Списки Python и стабильная сортировкаPython

Программы на Python
Ответить
Anonymous
 Списки Python и стабильная сортировка

Сообщение Anonymous »

В документации Python упоминается, что сортировка списков стабильна: https://docs.python.org/2/library/stdty ... l#index-29
Там написано: " Начиная с Python 2.3, метод sort() гарантированно стабилен. Сортировка стабильна, если она гарантирует отсутствие изменения относительного порядка сравниваемых элементов — это полезно для сортировки за несколько проходов (например, сортировки по отделам). , затем по уровню зарплаты)»
То же самое упоминается в другой ссылке на Stackoverflow, где некоторые пользователи ссылаются на одни и те же документы и повторяют, что сортировка Python имеет стабильную сортировку: Сортировка списка Python по двум полям
Однако я не до конца понимаю эту концепцию. В приведенном ниже примере я ожидал, что результат каждого оператора печати будет одинаковым, но это не так.
Пример кода –

Код: Выделить всё

from operator import itemgetter

list1 = []
list1.append(('A','Z','50'))
list1.append(('A','Y','10'))
list1.append(('B','Z','10'))
list1.append(('B','Y','50'))

list1.sort(key = itemgetter(0,1,2))
print(list1)

list2 = []
list2.append(('A','Z','50'))
list2.append(('A','Y','10'))
list2.append(('B','Z','10'))
list2.append(('B','Y','50'))

list2.sort(key = itemgetter(0,1))
list2.sort(key = itemgetter(2))
print(list2)
Результат, который я получаю, следующий -
[('A', 'Y', '10'), ('A', ' З', '50'), ('Б', 'Д', '50'), ('Б', 'З', '10')]
[(' А', 'Й', '10'), ('Б', 'З', '10'), ('A', 'Z', '50'), ('B', 'Y', '50')]
Мне интересно, почему я не получаете тех же результатов?

Подробнее здесь: https://stackoverflow.com/questions/793 ... table-sort
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»