Сортировка множеств?
Как мы знаем, порядок следования элементов в множестве не учитывается. Поэтому есть ли смысл говорить о сортировке множеств в Python 3?! (Именно поэтому в заголовке стоит знак вопроса)
Для быстрого поиска элемента во множестве, желательно хранить их в памяти в упорядоченном виде.
Рассмотрим несколько примеров. Что будет с элементами разных типов данных в одном множестве? Такие элементы не должны сортироваться. Если мы будем выводить элементы с помощью команды print()
, то они выводятся примерно следующим образом:
a = {0, 1, 12, 'b', 'ab', 3, 2, 'a'}
print(a) # {0, 1, 2, 3, 'a', 12, 'b', 'ab'}
В данном случае выводятся не отсортированные значения. Если повторить запуск, то порядок вывода может быть уже другой. Но это только в том случае, если перемешаны элементы разного типа.
Давайте попытаемся вывести данные одного типа (например, только числа):
a = {0, 1, 12, 3, 2}
print(a) # {0, 1, 2, 3, 12}
Все элементы выведены упорядоченно. Попробуем преобразовать в список:
a = {0, 1, 12, 3, 2}
b = list(a)
print(b) # [0, 1, 2, 3, 12]
Аналогично, в список записались отсортированные по возрастанию элементы.
Получается, что элементы хранятся в памяти в упорядоченном виде, если они одного типа. Но лучше не стоит на это рассчитывать, алгоритмы Python могут поменяться.
Если вам нужно получить отсортированный список из множества, лучше воспользоваться для верности функцией sort
(sorted
). Элементы будут точно отсортированы. Ваш код будет понятен для других.