Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
55 / 13 / 2
Регистрация: 26.10.2014
Сообщений: 1,107

Множества - не упорядочены?

02.09.2022, 17:27. Показов 2426. Ответов 19
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Приветствую.
Множества - не упорядочены. Разве не так?
Почему же тогда, когда я пишу:
Python
1
s = {1, 2, 3, 4, 5, 6, 7, 8, 9}
Я получаю ровно эту же последовательность?
Заранее благодарен!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
02.09.2022, 17:27
Ответы с готовыми решениями:

Определить процент чисел, четные цифры которых упорядочены по возрастанию, по убыванию и не упорядочены.
В компонент ListBox1 на форме вводится массив целых чисел. Определить процент чисел, четные цифры которых упорядочены по возрастанию, по...

Множества. Выбрать 3 точки первого множества так, чтобы треугольник с вершинами в этих точках накрывал все точки второго множества и имел min площадь.
Даны 2 множества точек на плоскости. Выбрать 3 различные точки первого множества так , что бы треугольник с вершинами в этих точках...

Число изъять из множества А, если оно является элементом множества А, но не является элементом множества В
Введено с клавиатуры число изъять из множества А, если оно является элементом множества А, но не является элементом множества В. ...

19
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
02.09.2022, 17:29
Цитата Сообщение от jonikster Посмотреть сообщение
Я получаю ровно эту же последовательность?
А какую ты собирался получить?
1
55 / 13 / 2
Регистрация: 26.10.2014
Сообщений: 1,107
02.09.2022, 17:56  [ТС]
iSmokeJC, неупорядоченную, в случайном порядке.
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
02.09.2022, 17:58
jonikster, т.е. ты полагал, что сет тебе будет перемешивать то, что ты ему дал?
1
55 / 13 / 2
Регистрация: 26.10.2014
Сообщений: 1,107
02.09.2022, 18:14  [ТС]
iSmokeJC, Именно, потому что множество по реализации содержит не повторяющиеся элементы в случайном порядке.
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
02.09.2022, 18:22
Python
1
s = {3,4,2,7,9,1,0}
Пожалуйста. Неповторяющиеся, в случайном порядке.
jonikster, неупорядоченность подразумевается в том, что сет не следит за порядком. А не обеспечивает беспорядок.

Добавлено через 5 минут
Сет отвечает на вопрос - есть ли в данном наборе искомый элемент? А где именно он находится - абсолютно не важно. Именно поэтому у сета нет взятия элемента по индексу.
0
55 / 13 / 2
Регистрация: 26.10.2014
Сообщений: 1,107
02.09.2022, 19:27  [ТС]
iSmokeJC, Раньше, по крайней мере, в Python было, что set перемешивает значения.
0
3582 / 2182 / 571
Регистрация: 02.09.2015
Сообщений: 5,510
02.09.2022, 21:24
Цитата Сообщение от jonikster Посмотреть сообщение
Раньше, по крайней мере, в Python было, что set перемешивает значения.
Никогда такого не было.
0
5515 / 2868 / 571
Регистрация: 07.11.2019
Сообщений: 4,758
02.09.2022, 21:47
Цитата Сообщение от Arsegg Посмотреть сообщение
Никогда такого не было.
Оно может и не было, но никто не гарантирует, что этого не будет/нет в той или иной реализации Python. Следует принять, что set - просто множество и не стоит надеятся на его какую-то упорядоченность.

Добавлено через 2 минуты
Python
1
2
a=set('12345654321567')
print(a)
Code
1
{'1', '6', '5', '3', '2', '7', '4'}
0
3582 / 2182 / 571
Регистрация: 02.09.2015
Сообщений: 5,510
02.09.2022, 22:10
u235, в моем понимании, множества (set) в Python - это реализация математических множеств. А там, как известно, отношение порядка элементов не определено - только принадлежит элемент множеству или нет.
P. S. Можно, конечно, прикрутить связанный список по ключам (аналог LinkedHashSet) или "кастрировать" dict до ключей. В общем случае, будет поддерживаться только порядок добавления ключей.
P. P. S. Реализации красно-черных деревьев в Python'е нет, но стоит их упомянуть: ключи упорядочены по возрастанию и их порядок поддерживается при добавлении/удалении элементов. В Java это TreeSet.
2
55 / 13 / 2
Регистрация: 26.10.2014
Сообщений: 1,107
02.09.2022, 22:17  [ТС]
u235, Вот! Вот! Вот! Он же перемешал их?
0
3582 / 2182 / 571
Регистрация: 02.09.2015
Сообщений: 5,510
02.09.2022, 22:24
Цитата Сообщение от jonikster Посмотреть сообщение
Он же перемешал их?
Хеш-таблицы не имеют никакого отношения к перемешиванию элементов. Создается список "корзинок" по хешам элементов и поддерживается их уникальность в каждой "корзинке".
2
55 / 13 / 2
Регистрация: 26.10.2014
Сообщений: 1,107
03.09.2022, 01:20  [ТС]
Arsegg, Я не совсем понял при чем тут хеш-таблицы, ибо речь о set, а не о dict.
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
03.09.2022, 08:10
jonikster,
Существует ограничение, что элементами множества (как и ключами словарей) в Python могут быть только так называемые хешируемые (Hashable) объекты. Это обусловлено тем фактом, что внутренняя реализация set основана на хеш-таблицах.
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38167 / 21102 / 4307
Регистрация: 12.02.2012
Сообщений: 34,690
Записей в блоге: 14
03.09.2022, 09:20
jonikster, когда говорят, что set не упорядочен, это означает только одно: физический порядок данных в сете может быть любым - таким, как удобно Питону. Не больше и не меньше. Никакого дополнительного перемешивания сет делать не будет (зачем лишняя работа?). Если тебе нужно искусственно перемешать список, используй shuffle.
0
259 / 205 / 60
Регистрация: 25.05.2022
Сообщений: 879
03.09.2022, 10:11
Видимо, автор спрашивал почему в Пайтоне множество вида 1,2,3,4,5 на экране может отображаться как 2,1,4,5,3, пытаясь найти смысл в перестановках. А суть в том, что никакого подвоха и не было, просто так отображается, а не иначе.

А если нужны отсортированные - укажи конкретно. Фича)
0
55 / 13 / 2
Регистрация: 26.10.2014
Сообщений: 1,107
03.09.2022, 12:14  [ТС]
Yuri V, Я просто хочу понять, как это работает и когда. Потому что если я специально задаю определенную последовательность, она такой и остается. Если же через set, она становится любой и т.д.
0
3582 / 2182 / 571
Регистрация: 02.09.2015
Сообщений: 5,510
03.09.2022, 12:58
jonikster, взять, например, библиотеку с длинными полками книг (хеш-таблица). Книги расставлены по первой букве фамилии автора (по "корзинкам"). Ты хочешь поставить новую на соответствующую полку (добавление нового элемента):
1) Смотришь на первую букву фамилии автора (хеш);
2) Смотришь всю полку с данной буквой фамилии автора ("корзинку");
3) Если не находишь, то ставишь книгу на полку.
В каком месте здесь происходит упорядочивание и/или (случайное) перемешивание?

Добавлено через 5 минут
Python
1
2
3
4
5
6
7
8
9
class A:
    def __hash__(self):
        return 0
        
 
a = A()
s = {0, a, 1, 2, 10}
s.remove(a)
print(s)  // {0, 2, 1, 10}
1
5515 / 2868 / 571
Регистрация: 07.11.2019
Сообщений: 4,758
03.09.2022, 13:52
Цитата Сообщение от jonikster Посмотреть сообщение
Я просто хочу понять, как это работает и когда.
Тогда может стоит заглянуть в исходники Python'а?
1
3582 / 2182 / 571
Регистрация: 02.09.2015
Сообщений: 5,510
03.09.2022, 13:55

Не по теме:

Цитата Сообщение от u235 Посмотреть сообщение
Тогда может стоит заглянуть в исходники Python'а?
Кликните здесь для просмотра всего текста


1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
03.09.2022, 13:55
Помогаю со студенческими работами здесь

Из третьего множества удалить элементы второго множества не входящие в первое множество
Даны три множества. Из третьего множества удалить элементы второго множества не входящие в первое множество.

Множества в модулях. Вывести все элементы множества А, которые не входят в множество В
Помогите пожалуйста, совсем ничего не понимаю во множествах. Задача! Пусть заданы множество А и множество В целых чисел, вывести...

Заменить во множестве А первое вхождение множества В на элементы из множества С такого же размера
Заменить во множестве А первое вхождение множества В на элементы из множества С такого же размера.

Даны два множества. Из множества А удалить четные элементы входящие в множество В.
Даны два множества. Из множества А удалить четные элементы входящие в множество В.

Связь между значением элемента множества и именем иного множества
Уважаемые корифеи-алгебраисты! Я студент из Киева. Мне для дипломного нужна небольшая помощь-подсказка профессионала-алгебраиста! Полностью...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru