Почему выходные данные множества, построенного из списка случайных чисел, всегда упорядочены? - PullRequest
0 голосов
/ 04 марта 2020

Я заметил, что построение набора из заданного списка чисел для того, чтобы содержать только уникальные числа, всегда возвращает отсортированный набор. Я прочитал, что набор не упорядочен, так что мне здесь не хватает?

Я запускаю этот простой код несколько раз, печатая всегда упорядоченный список:

import random
random_list = [random.randrange(1, 100) for i in range(1000)]
print(set(random_list))

1 Ответ

1 голос
/ 04 марта 2020

Внутренний порядок набора (в га sh ведер) в основном определяется значением hash элементов. Для int объектов n он содержит

n == hash(n)

, поэтому внутренняя структура набора будет близко отражать естественный порядок элементов. Если вы попробуете то же самое с поплавками, вы увидите другое поведение:

random_list = [random.randrange(1, 100) / 4.0 for i in range(10)]
print(set(random_list))
# {3.5, 4.75, 4.25, 6.25, 5.5, 11.25, 13.25, 16.25, 19.0, 23.75}
...