Уроки Python с нуля / #11 - Множества (set и frozenset)

Поділитися
Вставка
  • Опубліковано 5 лип 2024
  • Python содержит еще один формат списка, что позволяет хранить набор данных. Таким списком являются множества. В ходе урока мы научимся использовать множество «set», а также множество «frozenset».
    ✅ Полезные ссылки:
    - Урок на сайте itProger: itproger.com/course/python/11
    ⏰ Тайм коды:
    00:00 - Начало
    00:18 - Что такое множества?
    01:40 - Создание множества
    03:30 - Работа со множеством
    05:07 - Удаление повторений
    06:09 - Множество «frozenset»
    07:47 - Заключительная часть
    ✔ Сообщество программистов: itproger.com/
    ✔ -------------
    Вступай в группу Вк - prog_life 🚀
    Инстаграм itProger: / itproger_official
    Группа FaceBook - goo.gl/XW0aaP
    Instagram: / gosha_dudar
    Telegram: t.me/itProger_official
    Twitter - / goshadudar
    - Уроки от #itProger 👨🏼‍💻
    - Все уроки по хештегу #itprogerLessons

КОМЕНТАРІ • 113

  • @Lola_Braun
    @Lola_Braun 9 місяців тому +42

    Половину прошла, осталось столько же. Только сложность повыше )
    Большое спасибо за возможность учиться. Рада, что нашла вас на ютубе

  • @olegkomlev
    @olegkomlev 2 роки тому +131

    Если мы хотим создать пустое множество, а потом добавлять в него значения (например, с клавиатуры или из файла или путем вычисления), то такой путь будет ошибкой:
    a={ } # это не пустое множество!
    a.add(5)
    Выдает ошибку "AttributeError: 'dict' object has no attribute 'add'
    Потому что a={ } не создает пустое множество, а создает пустой словарь. Пустое множество создается при помощи set()
    a=set() # пустое множество
    a.add(5) # добавим в множество элемент

    • @techroniin4429
      @techroniin4429 Рік тому

      Интересно, спасибо

    • @user-ly4bw7vd4j
      @user-ly4bw7vd4j 6 місяців тому

      ааа так вот зачем set

    • @onlyql
      @onlyql 3 місяці тому

      Спасибо, друг)

  • @user-jg8mj1ec3t
    @user-jg8mj1ec3t 17 днів тому +1

    3:18 Грамотей! В случае если элементы в множестве типа int или float они ВСЕГДА выводятся в порядке возрастания!

  • @dmitry.masalskiy
    @dmitry.masalskiy Рік тому +5

    Спасибо за Ваш труд, уважаемый автор! Очередной урок пройден.

  • @deathgun1642
    @deathgun1642 11 місяців тому +3

    Спасибо вам, благодаря вам начал понимать этот язык программирования!

  • @Burovasofia
    @Burovasofia Рік тому +1

    спасибо за урок. шаг за шагом смотрю все уроки.

  • @Someone_Game999
    @Someone_Game999 Рік тому +26

    Огромная вам благодарность! Серьёзно, такие курсы, как это видео, стоят бешеные деньги. Огромное спасибо за ваш труд!

    • @wellstuff368
      @wellstuff368 7 місяців тому +3

      пишете полную чушь)) это не видео по какой-то технологии типо Селери, а базовые понятия о базовых типах данных. в курсах за "бешенные деньги" не дают ничего того, чего нет в открытом доступе.
      этим сообщением не приуменьшаю заслуг автора

    • @user-qw7lq3do1g
      @user-qw7lq3do1g 2 місяці тому +1

      @@wellstuff368вы наоборот увеличили заслугу автора, если сами заново перечитаете😅 а так за бешеные деньги и учать основу… оффлайн.

  • @SidiussGD
    @SidiussGD Рік тому

    Спасибо за урок!! Очень хорошо объясняете)

  • @Enorxes
    @Enorxes 11 місяців тому +1

    Спасибо за видео урок!

  • @daniilchuprin
    @daniilchuprin Рік тому +1

    Благодарю, очень толково разсказано

  • @MalkiaMmoja
    @MalkiaMmoja 2 роки тому +36

    Благодарю за урок! Правда, я пока не представляю, как эти множества применять на практике, но надеюсь, что со временем разберёмся.

    • @yoyozhik
      @yoyozhik Рік тому +21

      поясняю: скорее всего будет удобно, если, например нам понадобится сайт, типо спортмастера, где надо будет спросить у человека, каким видом спорта он увлекается. И он, допустим, несколько раз напишет "футбол" и чтобы сильно не нагружать алгоритм, он просто отсеивает повторяющиеся элементы

    • @user-nu6jv9qp7c
      @user-nu6jv9qp7c Рік тому +5

      @@yoyozhik спасибо, так даже можно в некотором роде экономить память на сервере сайта.

    • @wellstuff368
      @wellstuff368 7 місяців тому +2

      ​@@yoyozhik существует валидация данных пост запроса которая решает эту проблему, плюс на практике юзеру предпочтительнее разрешать выбирать из существующих видов спорта дабы он не сохранял слово писюн в ваш фрозенсет))

  • @user-sf5zg2sc5m
    @user-sf5zg2sc5m 7 місяців тому

    спасибо вам за уроки) захотелось начать программировать

  • @user-np6ch6vs7g
    @user-np6ch6vs7g Рік тому

    Спасибо за труд!

  • @TheTykVa
    @TheTykVa Рік тому +59

    Для чего нужен метод pop(), удаляющий первый элемент во множестве, если в нем априори нет первого элемента. По сути он удаляет рандомный элемент.

    • @VitaliyZlobin
      @VitaliyZlobin Рік тому +18

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

    • @DiasAmanzhol-fq5kb
      @DiasAmanzhol-fq5kb 7 місяців тому

      Тогда, можно использовать remove()

    • @wellstuff368
      @wellstuff368 7 місяців тому +2

      @@DiasAmanzhol-fq5kb для ремува нужно знать значение, тогда как попа этого не требует

  • @qazmko212
    @qazmko212 Рік тому +11

    Спасибо вам большое, благодаря вам я закрыла сессию на 5 и начала хоть что-то понимать в этом языке программирования 💖

    • @ultrarin7629
      @ultrarin7629 9 днів тому

      Закрыла сессию, но при этом Тимур?

  • @Calmasastone
    @Calmasastone Рік тому

    Спасибо за видео!

  • @user-kc9lx1io9q
    @user-kc9lx1io9q 3 місяці тому

    спасибо

  • @sanjimederbekov7630
    @sanjimederbekov7630 4 місяці тому

    Благодарю, залпом пересмотрел вам курс теперь пересматриваю, чтобы практиковаться. Сам записался на оффлайн курс у себя в городе и сегодня собираюсь сдать тест, чтобы сразу перейти на 2-й месяц, так как весь первый месяц обуения по их программе я уже здесь узнал))
    Но в этом видео появился вопрос:
    7:04 - я заметил, что числа не перемешиваются, а наоборот статично стоят отсортированные от меньшего)) Как их "зашаффлить"? )

  • @Hashikkkk
    @Hashikkkk Рік тому +6

    В с случайном порядке идут только строки, а цифры в порядке возрастания, а также не уточнил, что команда add добавляет в начало множества.

    • @user-km2vn5hv8n
      @user-km2vn5hv8n 8 місяців тому

      не всегда в порядке возрастания

  • @user-kh5oc6ks3e
    @user-kh5oc6ks3e Рік тому +1

    Top

  • @anderpython
    @anderpython Рік тому +1

    Почему в хаотичном, если при выполнении программы определенная сортировка все-таки есть??!! Например: True всегда встаёт между 0 и 2, а например 'str' располагается в конце множества..!!!

  • @AnderPython-tw3kp
    @AnderPython-tw3kp Рік тому +3

    Что-то мне подсказывается, что множество наоборот сортирует список или кортеж. А вот именно символы строки располагает хаотично)

    • @lievsey
      @lievsey 10 місяців тому

      Попробуй несколько раз выполнить программу - будет произвольный порядок

  • @mairambekduisheev969
    @mairambekduisheev969 2 роки тому +2

    как сделать так что бы оно работало через инпут

  • @retard77222
    @retard77222 Рік тому

    почему-то когда по урокам пишу всё в pycharm то все хорошо но мне как-то удобней работать в microsoft code, но проблема в том что пишу все так же но там уже идут какие-то ошибки не могу разобраться почему так происходит!?

  • @adiletasangalukov8556
    @adiletasangalukov8556 2 роки тому +2

    Вау

  • @quentindrenton
    @quentindrenton Рік тому +1

    Я буду тут каждый день. День 7.2

  • @Derek_3
    @Derek_3 8 місяців тому

    Во множестве элементы сортируются по возрастанию если это числа а с помощью pop() удаляет первый элемент

  • @alexey124
    @alexey124 2 роки тому +9

    интересный момент, что все таки множество нельзя использовать для "перемешки", у меня оно наоборот упорядочило числа:
    i = 4
    data = {3, 2, 1,"seeet"}
    while i < 22:
    data.update([i])
    i += 1
    print (data)
    Всегда выводит в строгом порядке от 1 до 21, только строка "seeet" скачет-туда сюда, а 3, 2, 1 (так же как и 2, 3, 1) он переворачивает в 1, 2, 3
    Я Python знаю только из видео автора, хотелось бы комментарий от него на этот счет, чтобы уже закрыть этот не укладывающийся в представление о множестве вопрос.

    • @dim4ik742
      @dim4ik742 2 роки тому +1

      Согласен

    • @_alexandr_sk
      @_alexandr_sk Рік тому

      Начиная с python 3.7 словари стали упорядоченными

    • @azizbekmurodov2450
      @azizbekmurodov2450 Рік тому

      Может быть дело в том что вы создали цикл и поставили туда множества а цикл всегда начинает с меньшего и идёт до большего поэтому хотя вы поставили множества она входит в цикл и принимает вид цикла

    • @stylebender1905
      @stylebender1905 Рік тому

      @@azizbekmurodov2450 wtf duuude?

  • @CreeperWithDynamite
    @CreeperWithDynamite Місяць тому

    Круто что они существуют, а зачем они нужны? где их можно использовать?

  • @user-mk8ev8to7y
    @user-mk8ev8to7y Рік тому

    Сложно, но мы прорвёмся😝

    • @user-mk8ev8to7y
      @user-mk8ev8to7y Рік тому

      Спасибо за уроки друг мой!

  • @user-kw7id3bw6l
    @user-kw7id3bw6l 8 місяців тому

    как вы комментируете весь код сразу или какую-то его часть?

    • @ExaileWalter
      @ExaileWalter 2 місяці тому

      ctrl + / , если в русской раскладке не работает, то необходимо гуглить где в настройках поменять, чтобы функция срабатывала и по ctrl + / и по ctrl + .

  • @kedoni9123
    @kedoni9123 4 місяці тому

    3:14 он всегда в порядке возрастания

    • @Redicko
      @Redicko 2 місяці тому

      В новой версии питона, скорее всего, поменяли это

  • @apav7
    @apav7 Рік тому +2

    Если вводить только цифровые значение, то они не в случайном порядке, а в порядке возрастания. Так что они у Вас не "случайно" так встали

    • @user-km2vn5hv8n
      @user-km2vn5hv8n 8 місяців тому

      не всегда в порядке возрастания

    • @firo9715
      @firo9715 4 місяці тому

      Множество не гарантирует сортировку цифровых значений в порядке возрастания. Можешь проверить это, добавив в множество какие-либо новые значение, например: 55555. Я сам не особо понял как там всё это устроено, но кажется это как-то связано с хэш-функцией.

  • @user-on3xh9fk5o
    @user-on3xh9fk5o 2 роки тому +3

    Подскажите, почему в данном примере не отображает True?
    date = {5, 7, 9, 1, 6, 4, 6}
    date.update(['stroka', True, 4.5, 3])
    print(date)

    • @user-pr5sg1xp8k
      @user-pr5sg1xp8k 2 роки тому +2

      тоже стало интересно, убрал из первого множества цифру один - и True появилось.
      возможно, это связано с превращением булевого типа в числовой, но конкретный механизм почему так происходит - не знаю

    • @takomy9033
      @takomy9033 2 роки тому +12

      True - это та же самая 1(False-0). А так как множества не отображают повторяющиеся элементы, то высвечивается только 1.

    • @user-gq3qw7yl6o
      @user-gq3qw7yl6o 2 роки тому +1

      ​@@takomy9033False - это тот же 0(True - 1). А так как множества не отображают повторяющиеся элементы, то высвечивается только False ????????????????????.

    • @Fabio_Fantome
      @Fabio_Fantome 2 роки тому +1

      ничё не измениться если прописать: data.add(bool(True))
      И с таким же успехом будет результаты если обратить его в int(), да даже в float ().
      Скорее всего множества не воспринимают bool как отдельный тип данных, только визуально добавляют, его просто "присваивают к стаду", а значение True = 1, напишешь False, всё добавится.

    • @olegkomlev
      @olegkomlev 2 роки тому +1

      False и True - не то же самое, что 0 и 1, но отличаются только "внешним видом" (bool построен из int изменением символьного представления, поэтому print печатает их по-разному). А для проверки неповторяемости в множестве важно не внешнее представление, а значение (хотя внешний вид тоже сохраняется). Сравните
      print({True,1, 1.0}) #{True}
      print({1, True,1.0}) #{1}
      print({1.0, True,1}) #{1.0}
      И так же сравниваются ключи в словаре:
      d={True:'b', 1:'i', 1.0:'f'}
      print(d) # {True: 'f' }
      print(d[1]) # f
      print(d[1.0]) # f
      print(d[True]) # f

  • @Westphaliapeace
    @Westphaliapeace Рік тому +1

    Для чего нужно это допустим в рабочем дне программиста нужно курс писать по конкретным примерам а то слышишь, только множество списки и тд и тп зачем все это и где исполизовать

  • @user-py4te5ki7v
    @user-py4te5ki7v Рік тому

    У меня True идёт как 1 а False не идёт ведь оно как 0

  • @user-qh4ri3zu7c
    @user-qh4ri3zu7c 2 роки тому +4

    клыр

  • @alexeyantonenko877
    @alexeyantonenko877 Рік тому +2

    Спасибо. А наоборот как сделать? Преобразовать множество в список

    • @Ghotierr
      @Ghotierr Рік тому

      C помощью функции list(), например. Только порядок элементов списка будет "случайный".

  • @techroniin4429
    @techroniin4429 Рік тому

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

  • @yanavin2964
    @yanavin2964 Рік тому +1

    person = {
    "user_1": {
    "name": "yan",
    "second_name": "avin",
    "country": {"RUSSIA"},
    "hobbies": {"important": "lang", "others": "python"},

    }
    }
    print(person["user_1"]["hobbies"]["others"])
    print(person.keys("user_1"))
    ребят а если я хочу вывести ключи с первого пользователя как мне в принт персон кейс написать юзер один что бы он все вывел? я в посл строчке написал но питон пишет что я ошибся

    • @thankyou9818
      @thankyou9818 Рік тому

      Привет. Если вопрос ещё актуален отвечу. Если ты хочешь вывести только ключи юзер_1, тогда пиши:
      print(person['user_1'].keys())

    • @yanavin2964
      @yanavin2964 Рік тому

      @@thankyou9818 привет спасибо за ответ а можно ли вывести только все ключи от хобби например? print(person['user_1']['important'].keys()) так будет? мне ошибку пишет

    • @thankyou9818
      @thankyou9818 Рік тому

      @@yanavin2964 нет. Если ты хочешь всё ключи от хобби, то тогда пишешь print(person['user_1']['hobbies'].keys()). А если ты пишешь там импотант.кейс то тогда тебе ошибку выведет, потому что импотант является сам кейсом.

    • @thankyou9818
      @thankyou9818 Рік тому

      @@yanavin2964 если что-то не понял можешь задать вопрос

  • @user-nw2yb6pn6l
    @user-nw2yb6pn6l 8 місяців тому

    с каждым видео просмотров все меньше и меньше)

  • @FastAbsolute
    @FastAbsolute Рік тому

    Data = {2, 5, 4, 5, 1}
    print(Data)
    Run:{1, 2 , 4, 5}
    И так всегда при запуске. Это нормально?

  • @user-wm9lo2xt8m
    @user-wm9lo2xt8m 11 місяців тому +2

    data = {3,4,6,13,2233,9}
    print(data)
    Почитав комментарии понял, что все должно вставать по возрастанию, но почему 2233 встает вообще по середине?..

    • @user-km2vn5hv8n
      @user-km2vn5hv8n 8 місяців тому

      вроде как порядок случайный,автор так говорит

    • @ExaileWalter
      @ExaileWalter 2 місяці тому

      Хотя Python стал сохранять порядок вставки для словарей начиная с версии 3.7 (как побочный эффект реализации), это не относится к множествам. Не обеспечивая гарантию относительно порядка. Если нужно упорядочить, то код такой:
      data = {3,4,6,13,2233,9}
      sorted_data = sorted(data)
      print(sorted_data) # Вывод: [3, 4, 6, 9, 13, 2233]

  • @zadrod3780
    @zadrod3780 4 місяці тому

    Просмотрел половину уроков все прекрасно понятно но забывается,придется устранять эту проблему

  • @NBB-bz8vd
    @NBB-bz8vd 11 місяців тому +2

    а в каком уроке мы до этого изучали сплит ?

    • @logan_Makegames
      @logan_Makegames 7 місяців тому

      eblan

    • @Gill_only
      @Gill_only 6 місяців тому

      Про списки урок

    • @addmagtech
      @addmagtech 5 місяців тому

      напрягииииисссь...

    • @ExaileWalter
      @ExaileWalter 2 місяці тому

      Просьба оставлять корректные комментарии на вопрос. Ни к чему хорошему вас не приведёт то, что вместо ответа на запрашиваемый вопрос, предоставляются оскорбления и низменная ирония.

  • @mirkamolrakhimov4090
    @mirkamolrakhimov4090 2 роки тому

    Youtbe Teacher

  • @AndrosovArtem
    @AndrosovArtem 2 роки тому +5

    я один не понимаю? почему множества не рандомят числа до 10?

    • @Pulsatil1
      @Pulsatil1 2 роки тому +3

      Та же история. И в видеоуроке числа до 10 не рандомились, а выводились в порядке возрастания. Хотелось бы услышать ответ от автора.

    • @EvgenijJobs
      @EvgenijJobs 2 роки тому +1

      Ну, это не совсем так. Все зависит от порядка добавления элементов в множество. Попробуйте, например, {9, 2, 1} и {1, 2, 9}. У меня вывод print({9, 2, 1}) И print({1, 2, 9}) разный. Объясняется все тем, как устроены хэш-таблицы и функция hash().

    • @EvgenijJobs
      @EvgenijJobs 2 роки тому

      Гораздо интереснее (для непосвященных) почему {1, True} == {1} =)

    • @gddotop2231
      @gddotop2231 2 роки тому

      @@EvgenijJobs True является 1, а False 0

    • @olegkomlev
      @olegkomlev 2 роки тому +3

      Множества не предназначены для перемешивания чисел. "Случайный порядок во множестве" надо понимать "во множестве не хранится информация о порядке элементов, поэтому порядок в котором элементы печатаются или перебираются в цикле for не определен". Т.е. они могут выводится в порядке возрастания, в порядке убывания, в каком-то смешанном порядке и т.д. - это на усмотрение самого Питона. Гарантируется лишь ,что один оператор print или один оператор for обработает в каком-то порядке все элементы множества без повторений. А уж как порядок меняется или не меняется при добавлении или удалении элементов - это как удобно самому интерпретатору. Может быть даже и так , что мы ничего с множеством не делаем , а print каждый раз выводит в разном порядке (мало ли, может сборщик мусора что-то там оптимизирует в этом множестве, чтобы его легче обрабатывать).

  • @backend.developer2808
    @backend.developer2808 Рік тому

    Это какая программа Python или PyCharm?

  • @vaaaaavdelux
    @vaaaaavdelux 14 днів тому

    Не понимаю зачем нужно писать команды чтобы что либо добавить,ведь можно сделать это в ручную просто добавив в список новый элемент

  • @PornerIgor
    @PornerIgor 2 роки тому +9

    хахахахха 2:06, LOHE -Лохи

  • @SeraphimLUX
    @SeraphimLUX 10 місяців тому +1

    Автор в этом курсе поставил себе одну задачу - максимально быстро заспидранить на отьебись "курсы" по программированию...

    • @Gill_only
      @Gill_only 6 місяців тому

      А что он плохо объясняет или что-то недоговаривает?

  • @user-yy9jc1tg6n
    @user-yy9jc1tg6n Рік тому

    По моему происходит не перемешивание значений. а сортировка!

    • @_alexandr_sk
      @_alexandr_sk Рік тому +1

      Начиная с python 3.7 множества стали упорядоченными

  • @Red-sw5lm
    @Red-sw5lm 5 місяців тому

    Кто знает почему всегда snumber 0 если в if изменяется на другое?
    import random
    import os
    attempt = 0
    snumber = 0
    print("Выберите уровень сложности")
    print("1. Легкий - Неограниченое число попыток от 0 до 100")
    print("2. Нормальный - 15 Попыток от 0 до 250")
    print("3. Сложный - 20 Попыток от 0 до 500")
    dif = input()
    if dif == 1:
    snumber = random.randrange(101)
    if dif == 2:
    snumber = random.randrange(251)
    if dif == 3:
    snumber = random.randrange(501)
    os.system("cls")
    while True:
    print(snumber)
    print("================")
    print("| Угадай число |")
    print("================")
    print("Попытки:",attempt)
    print("================")
    number = int(input())
    os.system("cls")
    if number == snumber:
    print("===========================")
    print("| Поздравляем ты победил! |")
    print("===========================")
    break
    if number < snumber:
    print("Больше!")
    attempt = attempt + 1
    if number > snumber:
    print("Меньше!")
    attempt = attempt + 1
    input()