ИМХО стоило бы рассказать, что у iter() есть второй аргумент который вызывает stopiteration в случае если элемент последовательности совпадает с этим вторым аргументом. Например l = [x for x in iter(input, '-1')], будет заполнять массив с помощью input пока не получит -1 на вход
Если у iter задан второй аргумент, то первым аргументом должна быть функция, выдающая очередное значение. А если первым аргументом указать список или строку, то будет ошибка.
Что я понял: Итерируемые обьекты - это те, которые можно перебрать, например списки и строки (а ещё кортежи, множества, словари и.т.п). Итератор - это обьект, который возвращает свои элементы по одному за раз. Когда элементы заканчиваються, итератор возвращает исключение StopIteration. - Элементы итератора можно перебрать всего один раз, для последующих придется заново создавать итератор. - Доступ к обьекту по итератору и по индеку - не одно и тоже. - Итераторы используються если нужно постоянно перебирать итерируемые обьекты разных типов (например, это происходит в цикле for).
Если б не это видео, вообще не понял бы чего хотят на уроке. Как же любят некоторые нести хрень заумными словами полчаса, хотя за полминуты можно всё разьяснить. Большое спасибо.
Что такое итерация - я знаю ( с задач линейного программирования в ексель, например). Но, тут мне сложно представить практическое значение этих возможностей.
@selfedy, А можна же исползоват цикл for чтобы зделеь эта. Вот например: arr=[5, 9, 12, 18] for i in arr: print(i) Почему же нужно функцим итер и некст?
Интересно, спасибо вам! Подскажите, а в каких случаях используется итератор? В каких практических задачах лучше использовать именно итератор, а не тот же цикл for? Я пока не очень вижу разницу, где лучше применять одно, а где - другое.
Цикл for и использует итератор. Правило простое, если можно без итератора. то применять его не нужно, как появится задача, где он необходим, вы естественно, им воспользуетесь.
Так и не понятно в каких случаях может пригодиться итератор. Без практического примера применения этот урок оказался слаб. for element in iter_ object: прекрасно предоставляет доступ к элементам итерируемой коллекции. Я пока вижу только один вариант, когда нужно сразу перебирать несколько разных итерируемых объектов. Практического примера применения очень не хватает.
Получается, что механизм iter - это более абстрактное понятие? На практике iter реально используется? Или он в основном используется под капотом циклов?
после просмотра видео возникло два вопроса: 1. можно ли как-нибудь определить количество объектов в итераторе? 2. можно ли как-то понять, что перебрал все объекты в итераторе (не используя обработчик ошибок)?
я немного не понял пары моментов. А зачем нужны итераторы отдельно, если есть циклы? у него какая-то магия особая? типа этот тот же цикл, но на паузе? можем обратится к элементу и не двигаться дальше?
циклы при переборе коллекций используют итераторы, сначала берут у коллекции итератор, а затем, перебирают его, пока не произойдет исключение StopIteration. Итератор - универсальный механизм для перебора любых коллекций.
@@selfedu_rus да, это я как раз и понял. Даже есть еще "лучшее" объяснение, которое везде используют: итератор - это как раз часть цикла. Вопрос все равно открытый: зачем нужны отдельно итераторы, если есть конструкция с for? Какая ценность того, что вместо for я буду использовать iter...next()?
@@invisiblealex007 как правило for будет достаточно во многих случаях, но понимание итератора важно, т.к. возможно вы захотите реализовать свою коллекцию, которая также должна перебираться с помощью итератора, и здесь знание как это все работает очень пригодится. Ну и второе, непосредственно через итератор можно выбрать первые k значение, а for перебирает все.
@@invisiblealex007 Цикл for перед выполнением цикла создает итератор из того, что стоит после in и в начале каждой итерации вызывает функцию next, пока она не даст исключение StopIteration. При помощи своего итератора можно вызывать next в любой момент. Например получить сразу 2 элемента подряд, если по текущему элементу станет ясно, что на этой же итерации нужен второй (а иногда не нужен).
@@selfedu_rus с одной стороны плнятно - проосто знание механизма, с другой стороны можно тоже первые k элементы, , скажем, в строке из 30 символов перебрать,если сделать чрез по индексу) так, что это пример не сильно убедил - это все тот де for. Или в огромном словаре считываем только первы 5 значений. Пока пользы от итератора не увилел, а вот следующий комментарий немного прояснил ситуацию. Кастомный итератор может брать по 2а значения за раз и что-то с ними делать.
Слов много, а зачем это нужно не ясно. Зачем нужны данные методы при наличии циклов? Почему они не являются внутренними дандер-методами, скрытыми под капотом?
Спасибо, очень доступно излогаете. Понятность и доступность подачи, замечательная, одна из лучших
У вас отличные уроки!
подача матеріалу - клас! дякую.
Огромное спасибо! Автор выручает и дает отличный материал за бесплатно!
спасибо за этот и другие ваши курсы на этом канале. по питону ничего более обширного по объему и легкого для понимания я еще не встречал нигде.
Спасибо Сергей, отличное объяснение.
Спасибо. Позже узнаем применение.
ИМХО стоило бы рассказать, что у iter() есть второй аргумент который вызывает stopiteration в случае если элемент последовательности совпадает с этим вторым аргументом. Например l = [x for x in iter(input, '-1')], будет заполнять массив с помощью input пока не получит -1 на вход
Если у iter задан второй аргумент, то первым аргументом должна быть функция, выдающая очередное значение. А если первым аргументом указать список или строку, то будет ошибка.
Что я понял:
Итерируемые обьекты - это те, которые можно перебрать, например списки и строки (а ещё кортежи, множества, словари и.т.п).
Итератор - это обьект, который возвращает свои элементы по одному за раз. Когда элементы заканчиваються, итератор возвращает исключение StopIteration.
- Элементы итератора можно перебрать всего один раз, для последующих придется заново создавать итератор.
- Доступ к обьекту по итератору и по индеку - не одно и тоже.
- Итераторы используються если нужно постоянно перебирать итерируемые обьекты разных типов (например, это происходит в цикле for).
Спасибо, хоть ты доступно обьяснил
@@BodenUatrade Это не его слова - это слова Сергея из видео, немного переделанные автором комментария
Спасибо за видео! Жду про генераторы
Спасибо за уроки!
Лайк!
Спасибо, добрый человек!
Отличное объяснение! Большое вам спасибо!
Супер, спасибо за урок и новое открытие
спасибо большое!!!
очень интересно и понятно:-)
вы отлично объясняете
Прикольно конечно. Не представляю для чего может понадобится iter() в явном виде но в контексте понимания работы for вполне познавательно.
как всегда гениально!
Thank you very much, от души
Спасибо!!! Очень ценно!
Эта функция iter() пригодится при создании своего (пользовательского) объекта (колекции).
Например, односвязного списка
Отличное объяснение! Попробовал эксперимент со словарём, ключ выдал полностью, а значение -ошибку!
спасибо большое=)
Отличное объяснение!
спасибо!👏👍
спасибо
Лучший!!!
Если б не это видео, вообще не понял бы чего хотят на уроке.
Как же любят некоторые нести хрень заумными словами полчаса, хотя за полминуты можно всё разьяснить.
Большое спасибо.
итератор итерировал, итерировал да не выинтерировал
интерпретатор интерпретировал, интерпретировал да не выинтрепретировал
У меня скорее крутился вопрос нужно ли каждый раз писать iter или можно сразу весь списокт(или строку) прокрутить, написав одну строку кода...
Что такое итерация - я знаю ( с задач линейного программирования в ексель, например). Но, тут мне сложно представить практическое значение этих возможностей.
👍👍👍👍👍
@selfedy, А можна же исползоват цикл for чтобы зделеь эта. Вот например:
arr=[5, 9, 12, 18]
for i in arr:
print(i)
Почему же нужно функцим итер и некст?
А почему учит какой-то итер если я знаю for
👍
Опять чёрная магия пошла
Интересно, спасибо вам! Подскажите, а в каких случаях используется итератор? В каких практических задачах лучше использовать именно итератор, а не тот же цикл for? Я пока не очень вижу разницу, где лучше применять одно, а где - другое.
Цикл for и использует итератор. Правило простое, если можно без итератора. то применять его не нужно, как появится задача, где он необходим, вы естественно, им воспользуетесь.
@@selfedu_rus понятно, спасибо!
@@selfedu_rus интересно можно ли использовать функцию next внутри for) пошёл тестить)
@@Edward-y2h не пробовал )
Так и не понятно в каких случаях может пригодиться итератор. Без практического примера применения этот урок оказался слаб. for element in iter_ object: прекрасно предоставляет доступ к элементам итерируемой коллекции. Я пока вижу только один вариант, когда нужно сразу перебирать несколько разных итерируемых объектов. Практического примера применения очень не хватает.
Получается, что механизм iter - это более абстрактное понятие? На практике iter реально используется? Или он в основном используется под капотом циклов?
в основном в циклах
смотрю 2х для повторения
после просмотра видео возникло два вопроса:
1. можно ли как-нибудь определить количество объектов в итераторе?
2. можно ли как-то понять, что перебрал все объекты в итераторе (не используя обработчик ошибок)?
На оба вопроса: нет, нельзя
for ... next - BASIC
Что то я так и не понял для чего это нужно если есть цикл for?
это встроенный метод в for. Просто показал для общего развития
я немного не понял пары моментов. А зачем нужны итераторы отдельно, если есть циклы? у него какая-то магия особая? типа этот тот же цикл, но на паузе? можем обратится к элементу и не двигаться дальше?
циклы при переборе коллекций используют итераторы, сначала берут у коллекции итератор, а затем, перебирают его, пока не произойдет исключение StopIteration. Итератор - универсальный механизм для перебора любых коллекций.
@@selfedu_rus да, это я как раз и понял. Даже есть еще "лучшее" объяснение, которое везде используют: итератор - это как раз часть цикла. Вопрос все равно открытый: зачем нужны отдельно итераторы, если есть конструкция с for? Какая ценность того, что вместо for я буду использовать iter...next()?
@@invisiblealex007 как правило for будет достаточно во многих случаях, но понимание итератора важно, т.к. возможно вы захотите реализовать свою коллекцию, которая также должна перебираться с помощью итератора, и здесь знание как это все работает очень пригодится. Ну и второе, непосредственно через итератор можно выбрать первые k значение, а for перебирает все.
@@invisiblealex007 Цикл for перед выполнением цикла создает итератор из того, что стоит после in и в начале каждой итерации вызывает функцию next, пока она не даст исключение StopIteration. При помощи своего итератора можно вызывать next в любой момент. Например получить сразу 2 элемента подряд, если по текущему элементу станет ясно, что на этой же итерации нужен второй (а иногда не нужен).
@@selfedu_rus с одной стороны плнятно - проосто знание механизма, с другой стороны можно тоже первые k элементы, , скажем, в строке из 30 символов перебрать,если сделать чрез по индексу) так, что это пример не сильно убедил - это все тот де for. Или в огромном словаре считываем только первы 5 значений. Пока пользы от итератора не увилел, а вот следующий комментарий немного прояснил ситуацию. Кастомный итератор может брать по 2а значения за раз и что-то с ними делать.
Вроде бы все просто, но черт побери как это все запомнить. Мне кажется бух шпаргалок перед глазами я не смогу ничего написать…
Это Пайтон такой умный, а в КуБейсике приходилось в конце цикла писать Next)
range и enunerate это классы :)
нет, функции
@@selfedu_rus Перейди в пайчарме в range
@@КириллСмаковенко Да, не знал, а в ресурсах всюду функция пишут. Спасибо.
По утиной типизации их называют функциями, так как они ведут себя как функции. Но технически вы правы.
Слов много, а зачем это нужно не ясно. Зачем нужны данные методы при наличии циклов? Почему они не являются внутренними дандер-методами, скрытыми под капотом?
Я так и не поняла, для чего нужен итератор, если есть for
for перебирает объекты, используя итератор; не было бы итераторов, не работал бы и for ))
@@selfedu_rus ну, я говорила с практической точки, ну, там, примеры, как, где, зачем они используются на практике
@@IT-roivu они используются в циклах, на них строится язык программирования этим все сказано
в чем проблема это сделать с помощью цикла 'for'
for именно эти функции и использует (заглянули под капот)
Цикл for неявно вызывает функцию next... Мой мир перевернулся..
Что у автора с дикцией? В некоторых словах нормально звуки выговаривает, некоторые нет... Стоит поработать над этим моментом и будет топ!
Спасибо
👍