#24. Итератор и итерируемые объекты. Функции iter() и next() | Python для начинающих

แชร์
ฝัง
  • เผยแพร่เมื่อ 26 ธ.ค. 2024

ความคิดเห็น • 94

  • @pavelnesterchuk5559
    @pavelnesterchuk5559 2 ปีที่แล้ว +9

    Спасибо, очень доступно излогаете. Понятность и доступность подачи, замечательная, одна из лучших

  • @ИванКруткевич
    @ИванКруткевич 3 ปีที่แล้ว +24

    У вас отличные уроки!

  • @volodymyr8215
    @volodymyr8215 2 ปีที่แล้ว +5

    подача матеріалу - клас! дякую.

  • @ikehoro
    @ikehoro ปีที่แล้ว +5

    Огромное спасибо! Автор выручает и дает отличный материал за бесплатно!

  • @ФедорПтичкин-з8п
    @ФедорПтичкин-з8п 2 ปีที่แล้ว +3

    спасибо за этот и другие ваши курсы на этом канале. по питону ничего более обширного по объему и легкого для понимания я еще не встречал нигде.

  • @orazovdidar
    @orazovdidar 9 หลายเดือนก่อน +2

    Спасибо Сергей, отличное объяснение.

  • @andredru4278
    @andredru4278 10 หลายเดือนก่อน +2

    Спасибо. Позже узнаем применение.

  • @vitaliy3521
    @vitaliy3521 2 ปีที่แล้ว +34

    ИМХО стоило бы рассказать, что у iter() есть второй аргумент который вызывает stopiteration в случае если элемент последовательности совпадает с этим вторым аргументом. Например l = [x for x in iter(input, '-1')], будет заполнять массив с помощью input пока не получит -1 на вход

    • @olegkomlev
      @olegkomlev 2 ปีที่แล้ว +7

      Если у iter задан второй аргумент, то первым аргументом должна быть функция, выдающая очередное значение. А если первым аргументом указать список или строку, то будет ошибка.

  • @alucardv8551
    @alucardv8551 3 ปีที่แล้ว +24

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

    • @BodenUatrade
      @BodenUatrade 7 หลายเดือนก่อน +1

      Спасибо, хоть ты доступно обьяснил

    • @mr_frost65
      @mr_frost65 7 หลายเดือนก่อน +1

      ​@@BodenUatrade Это не его слова - это слова Сергея из видео, немного переделанные автором комментария

  • @ferret8592
    @ferret8592 3 ปีที่แล้ว +4

    Спасибо за видео! Жду про генераторы

  • @diplomdeady
    @diplomdeady 3 ปีที่แล้ว +4

    Спасибо за уроки!
    Лайк!

  • @victorenersklad4467
    @victorenersklad4467 2 ปีที่แล้ว +2

    Спасибо, добрый человек!

  • @323ser
    @323ser 2 ปีที่แล้ว +3

    Отличное объяснение! Большое вам спасибо!

  • @elenalevasheva3830
    @elenalevasheva3830 ปีที่แล้ว +2

    Супер, спасибо за урок и новое открытие

  • @supervichka7764
    @supervichka7764 3 ปีที่แล้ว +6

    спасибо большое!!!
    очень интересно и понятно:-)

  • @13_chasov_nochi
    @13_chasov_nochi 2 ปีที่แล้ว +2

    вы отлично объясняете

  • @Aleks-x2i
    @Aleks-x2i ปีที่แล้ว +3

    Прикольно конечно. Не представляю для чего может понадобится iter() в явном виде но в контексте понимания работы for вполне познавательно.

  • @IAnikeyI
    @IAnikeyI 2 ปีที่แล้ว +1

    как всегда гениально!

  • @niktonikak1820
    @niktonikak1820 ปีที่แล้ว +1

    Thank you very much, от души

  • @mazur_vg
    @mazur_vg 3 ปีที่แล้ว +2

    Спасибо!!! Очень ценно!

  • @ridanil1
    @ridanil1 10 หลายเดือนก่อน +2

    Эта функция iter() пригодится при создании своего (пользовательского) объекта (колекции).

    • @Putu_pererenan
      @Putu_pererenan 5 หลายเดือนก่อน +1

      Например, односвязного списка

  • @tbassir9076
    @tbassir9076 ปีที่แล้ว +2

    Отличное объяснение! Попробовал эксперимент со словарём, ключ выдал полностью, а значение -ошибку!

  • @Faritech318
    @Faritech318 3 ปีที่แล้ว +3

    спасибо большое=)

  • @nokia_n-gage
    @nokia_n-gage 2 ปีที่แล้ว +1

    Отличное объяснение!

  • @jamjam3337
    @jamjam3337 ปีที่แล้ว +1

    спасибо!👏👍

  • @sainco3036
    @sainco3036 3 ปีที่แล้ว +2

    спасибо

  • @ИльяЗахаров-е3э
    @ИльяЗахаров-е3э 2 ปีที่แล้ว +1

    Лучший!!!

  • @Psoglawec
    @Psoglawec 2 ปีที่แล้ว +2

    Если б не это видео, вообще не понял бы чего хотят на уроке.
    Как же любят некоторые нести хрень заумными словами полчаса, хотя за полминуты можно всё разьяснить.
    Большое спасибо.

  • @likeclockwork9600
    @likeclockwork9600 3 ปีที่แล้ว +2

    итератор итерировал, итерировал да не выинтерировал
    интерпретатор интерпретировал, интерпретировал да не выинтрепретировал

  • @Юлия-ч9с6й
    @Юлия-ч9с6й 2 ปีที่แล้ว +1

    У меня скорее крутился вопрос нужно ли каждый раз писать iter или можно сразу весь списокт(или строку) прокрутить, написав одну строку кода...

  • @tonito4779
    @tonito4779 ปีที่แล้ว +1

    Что такое итерация - я знаю ( с задач линейного программирования в ексель, например). Но, тут мне сложно представить практическое значение этих возможностей.

  • @impellergimpeller5133
    @impellergimpeller5133 3 ปีที่แล้ว +2

    👍👍👍👍👍

  • @aveok1
    @aveok1 2 ปีที่แล้ว +1

    @selfedy, А можна же исползоват цикл for чтобы зделеь эта. Вот например:
    arr=[5, 9, 12, 18]
    for i in arr:
    print(i)
    Почему же нужно функцим итер и некст?

    • @aveok1
      @aveok1 2 ปีที่แล้ว

      А почему учит какой-то итер если я знаю for

  • @ibrahimoglu
    @ibrahimoglu 3 ปีที่แล้ว +3

    👍

  • @barma1309
    @barma1309 2 ปีที่แล้ว +1

    Опять чёрная магия пошла

  • @denistalko6585
    @denistalko6585 3 ปีที่แล้ว +4

    Интересно, спасибо вам! Подскажите, а в каких случаях используется итератор? В каких практических задачах лучше использовать именно итератор, а не тот же цикл for? Я пока не очень вижу разницу, где лучше применять одно, а где - другое.

    • @selfedu_rus
      @selfedu_rus  3 ปีที่แล้ว +5

      Цикл for и использует итератор. Правило простое, если можно без итератора. то применять его не нужно, как появится задача, где он необходим, вы естественно, им воспользуетесь.

    • @denistalko6585
      @denistalko6585 3 ปีที่แล้ว +1

      @@selfedu_rus понятно, спасибо!

    • @Edward-y2h
      @Edward-y2h 3 ปีที่แล้ว +1

      @@selfedu_rus интересно можно ли использовать функцию next внутри for) пошёл тестить)

    • @selfedu_rus
      @selfedu_rus  3 ปีที่แล้ว

      @@Edward-y2h не пробовал )

    • @skiffsolo9419
      @skiffsolo9419 3 ปีที่แล้ว

      Так и не понятно в каких случаях может пригодиться итератор. Без практического примера применения этот урок оказался слаб. for element in iter_ object: прекрасно предоставляет доступ к элементам итерируемой коллекции. Я пока вижу только один вариант, когда нужно сразу перебирать несколько разных итерируемых объектов. Практического примера применения очень не хватает.

  • @Larriva666
    @Larriva666 ปีที่แล้ว

    Получается, что механизм iter - это более абстрактное понятие? На практике iter реально используется? Или он в основном используется под капотом циклов?

    • @selfedu_rus
      @selfedu_rus  ปีที่แล้ว

      в основном в циклах

  • @blindboy007
    @blindboy007 หลายเดือนก่อน +1

    смотрю 2х для повторения

  • @ФедорПтичкин-з8п
    @ФедорПтичкин-з8п 2 ปีที่แล้ว

    после просмотра видео возникло два вопроса:
    1. можно ли как-нибудь определить количество объектов в итераторе?
    2. можно ли как-то понять, что перебрал все объекты в итераторе (не используя обработчик ошибок)?

    • @selfedu_rus
      @selfedu_rus  2 ปีที่แล้ว +2

      На оба вопроса: нет, нельзя

  • @datorikai9911
    @datorikai9911 3 ปีที่แล้ว +1

    for ... next - BASIC

  • @_mrmark
    @_mrmark ปีที่แล้ว +1

    Что то я так и не понял для чего это нужно если есть цикл for?

    • @TurboDeaz
      @TurboDeaz 7 หลายเดือนก่อน

      это встроенный метод в for. Просто показал для общего развития

  • @invisiblealex007
    @invisiblealex007 2 ปีที่แล้ว

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

    • @selfedu_rus
      @selfedu_rus  2 ปีที่แล้ว

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

    • @invisiblealex007
      @invisiblealex007 2 ปีที่แล้ว

      @@selfedu_rus да, это я как раз и понял. Даже есть еще "лучшее" объяснение, которое везде используют: итератор - это как раз часть цикла. Вопрос все равно открытый: зачем нужны отдельно итераторы, если есть конструкция с for? Какая ценность того, что вместо for я буду использовать iter...next()?

    • @selfedu_rus
      @selfedu_rus  2 ปีที่แล้ว +1

      @@invisiblealex007 как правило for будет достаточно во многих случаях, но понимание итератора важно, т.к. возможно вы захотите реализовать свою коллекцию, которая также должна перебираться с помощью итератора, и здесь знание как это все работает очень пригодится. Ну и второе, непосредственно через итератор можно выбрать первые k значение, а for перебирает все.

    • @olegkomlev
      @olegkomlev 2 ปีที่แล้ว +1

      @@invisiblealex007 Цикл for перед выполнением цикла создает итератор из того, что стоит после in и в начале каждой итерации вызывает функцию next, пока она не даст исключение StopIteration. При помощи своего итератора можно вызывать next в любой момент. Например получить сразу 2 элемента подряд, если по текущему элементу станет ясно, что на этой же итерации нужен второй (а иногда не нужен).

    • @invisiblealex007
      @invisiblealex007 2 ปีที่แล้ว

      @@selfedu_rus с одной стороны плнятно - проосто знание механизма, с другой стороны можно тоже первые k элементы, , скажем, в строке из 30 символов перебрать,если сделать чрез по индексу) так, что это пример не сильно убедил - это все тот де for. Или в огромном словаре считываем только первы 5 значений. Пока пользы от итератора не увилел, а вот следующий комментарий немного прояснил ситуацию. Кастомный итератор может брать по 2а значения за раз и что-то с ними делать.

  • @babeandproducer
    @babeandproducer 2 ปีที่แล้ว +1

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

  • @Jetscrolls
    @Jetscrolls ปีที่แล้ว

    Это Пайтон такой умный, а в КуБейсике приходилось в конце цикла писать Next)

  • @КириллСмаковенко
    @КириллСмаковенко 3 ปีที่แล้ว +2

    range и enunerate это классы :)

    • @selfedu_rus
      @selfedu_rus  3 ปีที่แล้ว

      нет, функции

    • @КириллСмаковенко
      @КириллСмаковенко 3 ปีที่แล้ว +1

      @@selfedu_rus Перейди в пайчарме в range

    • @selfedu_rus
      @selfedu_rus  3 ปีที่แล้ว +2

      @@КириллСмаковенко Да, не знал, а в ресурсах всюду функция пишут. Спасибо.

    • @mantrida
      @mantrida 3 ปีที่แล้ว +1

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

  • @x056x
    @x056x 3 หลายเดือนก่อน +1

    Слов много, а зачем это нужно не ясно. Зачем нужны данные методы при наличии циклов? Почему они не являются внутренними дандер-методами, скрытыми под капотом?

  • @IT-roivu
    @IT-roivu 2 หลายเดือนก่อน +1

    Я так и не поняла, для чего нужен итератор, если есть for

    • @selfedu_rus
      @selfedu_rus  2 หลายเดือนก่อน

      for перебирает объекты, используя итератор; не было бы итераторов, не работал бы и for ))

    • @IT-roivu
      @IT-roivu 2 หลายเดือนก่อน

      @@selfedu_rus ну, я говорила с практической точки, ну, там, примеры, как, где, зачем они используются на практике

    • @blindboy007
      @blindboy007 หลายเดือนก่อน

      @@IT-roivu они используются в циклах, на них строится язык программирования этим все сказано

  • @Илья-м4о5я
    @Илья-м4о5я ปีที่แล้ว

    в чем проблема это сделать с помощью цикла 'for'

    • @selfedu_rus
      @selfedu_rus  ปีที่แล้ว

      for именно эти функции и использует (заглянули под капот)

  • @андрейхоменко-и5я
    @андрейхоменко-и5я 3 ปีที่แล้ว +2

    Цикл for неявно вызывает функцию next... Мой мир перевернулся..

  • @prosto4elovek98
    @prosto4elovek98 2 ปีที่แล้ว +1

    Что у автора с дикцией? В некоторых словах нормально звуки выговаривает, некоторые нет... Стоит поработать над этим моментом и будет топ!

  • @ufc_uz6
    @ufc_uz6 2 ปีที่แล้ว +1

    Спасибо

  • @СергейСмирнов-ь8у
    @СергейСмирнов-ь8у 3 ปีที่แล้ว +2

    👍