48 Генераторы и итераторы. Выражения -генераторы в Python

  Рет қаралды 91,235

egoroff_channel

egoroff_channel

5 жыл бұрын

🔥🔥🔥 Инди-курс по Python 🔥🔥🔥
stepik.org/course/63085/promo
👉👉👉 Свой вопрос по курсу можешь задать в чате
t.me/+SlnNhAO7caBlNDM6
👉👉👉 Также подписывайся на мой телеграмм-канал
t.me/python_egoroff
egoroffartem.pythonanywhere.co...
Выражения - генераторы не хранят в памяти все свои элементы, а выдают их по одному по мере надобности
Генератор - итератор, элементы которого можно итерировать только один раз
Итератор - объект, который поддерживает функцию next(). Помнит о том, какой элемент будет браться следующим
Итерируемый объект - объект, который предоставляет возможность обойти поочередно свои элементы. Может быть преобразован к итератору.
Генераторы списков Python | List comprehension
• 46 Генераторы списков ...
Генераторы списков Python 2
• 47 Генераторы списков ...
egoroffartem.pythonanywhere.co...
На сайте будет выкладываться более подробная информация о данном курсе и будущих видео.
Все видео этого курса можете найти на сайте
egoroffartem.pythonanywhere.co...
или в Вк
videos-177962775?secti...
Если кому нужна помощь, предлагаю индивидуальные занятия. Подробнее пишите в личку в вк
artem_egoroff
python.study
В данном группе можете найти информацию о новых видео и задать вопросы

Пікірлер: 71
@egoroffchannel
@egoroffchannel Ай бұрын
🫵 Теория без практики - ничто, поэтому 👇 🐍 stepik.org/course/63085/promo 👉 специально для тебя создал бесплатный топовый курс по Python 👉 В нем тебя ждет: 📗 более 400 практических заданий на программирование 📗 более 250 тестовых заданий на проверку материала 📗 десятки часов видеоматерилов по теории 📗 видеоразборы решения заданий 📗 текстовые материалы по урокам, примеры кода 📗 доступ к закрытому чату с дружественной обстановкой 📗 сертификат в случае успешного прохождения курса
@pan_kapkan
@pan_kapkan 5 жыл бұрын
Слушай, я столько смотрел и читал про генераторы\итераторы, но только ты смог мне гусю объяснить, что же это такое. Я твой электорат. Продолжай! :D
@Kotiche3cat3
@Kotiche3cat3 3 жыл бұрын
а я хочу покер сделать но генератор нет :( :( :( :( :(
@slava_zxz
@slava_zxz 6 ай бұрын
@@Kotiche3cat3 чтобы покер сделать, надо аим тренировать, а не программированием заниматься
@artemstepanenko2905
@artemstepanenko2905 4 жыл бұрын
Наконец-то нашел видео, после которого стало понятно, что есть итератор. Спасибо.
@osvab000
@osvab000 4 жыл бұрын
Можно добавить еще такую аналогию: Допустим -Вы делаете запрос в поисковике - и он находит миллион ссылок! Для того чтобы их все отобразить - они не будут храниться в памяти где-то, а разобьются на куски (в виде найденных страниц). И вы уже видя все эти страницы - кликаете по ним, по мере необходимости, - и программа дальше запускается и отображает их.
@azarovdimka86
@azarovdimka86 3 жыл бұрын
Автор видео!!! Спасибо, что ты есть! Ты прекрасный гениальный человек! Спасибо за доступное разъяснение! Ты обладаешь редким ценным качеством!
@user-yl7qr7rs7k
@user-yl7qr7rs7k 5 жыл бұрын
Отлично все объяснил! Хотя бы один человек применяет в обучающем видео все возможности программы записи скринкаста(карандаш, подчеркивание), что делает объяснение более понятным :)
@user-vs4lo6on2c
@user-vs4lo6on2c Жыл бұрын
На моменте 6:15 лажа. Когда пишешь c = [ (i**2 for i in range(1,6)) ] и в принте выводишь c, то у тебя выводятся квадратные скобки, а это означает, что ты получил объект генератора внутри списка, но в видео говоришь противоположное. Если не веришь, то можешь через type(c) проверить, что c это list
@sqrooch662
@sqrooch662 Жыл бұрын
Чувак, спасибо за то, что экономишь моё время.
@elenalevasheva3830
@elenalevasheva3830 3 жыл бұрын
Спасибо вам за ваши уроки. У вас уроки просто песня!!! Так бы слушала и слушала. С вашими уроками не захочешь быть программистом, а станешь!
@slava_zxz
@slava_zxz 6 ай бұрын
и че стала?
@Dmitrii-Zhinzhilov
@Dmitrii-Zhinzhilov Жыл бұрын
Артём, благодарю! Отличное объяснение! 🔥🔥🔥 👍
@user-ec5oc5fb7b
@user-ec5oc5fb7b 5 жыл бұрын
Для меня это всё звучит как "Генераторы это генераторы, но генераторы это не генераторы, значит итерабельные объекты это генераторы, но не генераторы, которые были генераторами, однако сейчас генераторы". Возможно, дело в том, что List Comprehensions и генераторы не одно и то же.
@user-yq4dn3gj5p
@user-yq4dn3gj5p 5 жыл бұрын
Очень доходчиво/ наконец стало понятно
@ES-ng3el
@ES-ng3el 8 ай бұрын
Хорошее и понятное объяснение.Благодарю.
@user-ee1lx1pe7n
@user-ee1lx1pe7n 3 жыл бұрын
Ты как всегда на высоте) спасибо большое за видео!!!!
@user-vo2iu5hh7l
@user-vo2iu5hh7l Жыл бұрын
Доступно объяснил, спасибо
@user-fs9gp6oz8x
@user-fs9gp6oz8x 4 жыл бұрын
Интересная тема! Осталось научиться применять на практике:). Пошла дальше слушать про функции генераторы)
@alibekjusupov9577
@alibekjusupov9577 3 жыл бұрын
Спасибо за курс!
@fafafafa6779
@fafafafa6779 Жыл бұрын
спасибо за приятный и понятный контент!
@user-rm3ic8ku2e
@user-rm3ic8ku2e Ай бұрын
Спасибо за объяснение
@katerynariaboshapko4037
@katerynariaboshapko4037 3 жыл бұрын
Очень доходчиво! Спасибо огромное =)
@DeceptiRoma
@DeceptiRoma 2 жыл бұрын
Спасибо! Доступно и понятно
@user-wm4kp8hs8g
@user-wm4kp8hs8g 5 жыл бұрын
Спасибо😁
@anton-pavlov
@anton-pavlov 5 жыл бұрын
Спасибо!
@dual200611111988
@dual200611111988 Жыл бұрын
Чувак ты крут. Разжевал так что информация сама в голову залетела
@alexs2382
@alexs2382 2 жыл бұрын
классное объяснение 👍
@user-un6sk9zi6l
@user-un6sk9zi6l Жыл бұрын
Мужик, ты супер крутой. Спасибо тебе.
@shum4706
@shum4706 Жыл бұрын
качественный контент
@user-hu7tu5qe7b
@user-hu7tu5qe7b 3 жыл бұрын
Благодарю
@jamjam3337
@jamjam3337 Жыл бұрын
👏
@user-cz3nt6vy5p
@user-cz3nt6vy5p Жыл бұрын
Красава!
@user-bw5in2yo7s
@user-bw5in2yo7s Жыл бұрын
Смотрю это видео спустя три года после его публикации. Во-первых, автор, спасибо за работу. Во-вторых, не знаю, как изменилось ваше понимание генераторов за эти три года… Но это видео и следующее за ним очень слабо раскрывают тему генераторов. И мне кажется причина не в том, что вы упростили материал для начинающих, а в том, что сами не поняли, что такое генераторы. Начиная с очевидного: через генераторы можно читать файлы. И заканчивая тем, что генераторы могут как возвращать, так и принимать значения друг у друга. Соответсвенно, нужно объяснить и конструкцию yield from. Справедливости ради: генераторы действительно очень хитрые. К примеру можно привести этот видос: kzfaq.info/get/bejne/qtOVftaTl6zWkac.html
@user-tc5dr6zj9z
@user-tc5dr6zj9z 3 жыл бұрын
Все круто и понятно, только очень тихо.
@vladyan01
@vladyan01 2 жыл бұрын
Генератор очень похож на обход выборки запроса в 1С =)
@slava_zxz
@slava_zxz 6 ай бұрын
фу, зачем ты про 1 ass говоришь? выборка.Следующий() это гадость на русском, а не код
@BaraBarinov
@BaraBarinov 2 жыл бұрын
🔥🙏🏼
@user-my3jg8mx8n
@user-my3jg8mx8n 5 ай бұрын
Лайк
@lanaost4995
@lanaost4995 2 жыл бұрын
Очень понравилось объяснение темы! На 4 минуте повторила код (как и весь предыдущий) в блокноте Jupyter (у меня Anaconda), и все зависло на несколько минут, а когда отвисло, оказалось, что все это время Python считал! (я рассчитывала на быстрый вывод сообщения об ошибке, как у лектора, и растерялась, но решила подождать, что будет. На комбинации клавиш и вызов Диспетчера не реагировал никак). У меня было 9 нулей, и теперь у меня есть массив из 10^9 элементов. Можете добавить в субтитры/описание или наложить на видео что-то вроде "Не повторять! Может зависнуть"?
@slava_zxz
@slava_zxz 6 ай бұрын
компьютер слабый очень раз не может это переварить быстро
@evariste6943
@evariste6943 2 жыл бұрын
❓ВОПРОС❓ можно ли какм-то методом или ф-ей обновить выражение-генератор повторно не вводя его? я просто заметил что после полной итерации выражения-генератора оно не удаляется из памяти а как бы деактивируется
@hovhannesayvazyan2339
@hovhannesayvazyan2339 4 жыл бұрын
В 6.25, когда ставим квадратные скобки по верх генератора, разве не получаем лист с одним генератором?
@user-ni6co9cg5m
@user-ni6co9cg5m 4 жыл бұрын
type([генератор]) -> list. это лист компрехеншен. теперь интересно, почему pycharm выдал генератор оО?
@inconstancy
@inconstancy 3 жыл бұрын
@@user-ni6co9cg5m pycharm выдал как раз список с одним элементом, и этим элементом является генератор. Таким образом, можно сделать список, который будет в себе хранить множество различных генераторов, и в нужный момент их оттуда вытаскивать и использовать.
@user-pv5tb2zd7r
@user-pv5tb2zd7r 2 жыл бұрын
+
@SergiusBfg
@SergiusBfg 2 ай бұрын
Самое главное - НАХЕРА? Кто и где это применяет?
@LusinaHarutyunyan
@LusinaHarutyunyan 3 жыл бұрын
Пожалуйста дайте ссылку на 47 урок на boosty.
@EscanorTime
@EscanorTime 4 жыл бұрын
Добрый день. а почему 3 раза next(d) перебирает элементы списка, а 3 раза next(iter(s)) выдает всегда единицу?
@egoroffchannel
@egoroffchannel 4 жыл бұрын
потому что каждый раз создается новая итерация и берется ее первый элемент.
@EscanorTime
@EscanorTime 4 жыл бұрын
@@egoroffchannel Спасибо за ответ. А не подскажите зачем обычно внутри самого итератора метод __iter__ ? разве __next__ не достаточно? в мануалах написано : "Return the iterator object itself. This is required to allow both containers and iterators to be used with the for and in statements" , но все равно не понятно к чему тут это...
@user-gf8dr4fi7s
@user-gf8dr4fi7s 3 жыл бұрын
Хорошее объяснение по моему мнению, однако очень не понравилось то, что в конце видео музыка просто разрывает уши своей громкостью относительно голоса до этого
@egoroffchannel
@egoroffchannel 3 жыл бұрын
Да я поздно об этом узнал, теперь такого нету)
@user-gf8dr4fi7s
@user-gf8dr4fi7s 3 жыл бұрын
@@egoroffchannel ну тогда вопросов нет
@alexanderabc6296
@alexanderabc6296 3 жыл бұрын
А итератор разве не поддерживает тоже только один обход? Если два раза вызвать функцию sum к одному и тому же итератору, то во второй раз у меня выводится 0. Кто может объяснить?
@egoroffchannel
@egoroffchannel 3 жыл бұрын
итератор поддерживает только один обход
@alexanderabc6296
@alexanderabc6296 3 жыл бұрын
@@egoroffchannel, а что вы подразумеваете здесь в видео, когда определяете генератор, как «итератор, элементы которого можно итерировать только один раз»? Если итератор тоже один обход поддерживает, то чем в итоге генератор отличается от итератора (помимо того, что генератор это по сути способ задания итератора, как я понял)?
@JxSol
@JxSol 3 жыл бұрын
@@alexanderabc6296 Вот и у меня сейчас стоит такой же вопрос. Во многих источниках генератор определяется как "итератор, элементы которого можно итерировать только один раз". Но ведь любой итератор удаляет элементы после того, как вернул их, поэтому в конце итератор полностью опустошается и в нём отсутствуют какие-либо элементы. Пока для себя я определил генератор как "итератор, элементы которого генерируются исключительно в момент итерации". Такое определение я дал из того, что итератором можно сделать любую последовательность, например, с помощью функции iter(), и такой итератор будет хранить в себе элементы этой последовательности, тогда как генератор всегда создаёт элементы в момент итерации.
@alexanderabc6296
@alexanderabc6296 3 жыл бұрын
@@JxSol, я сейчас уже как месяц программированием не занимаюсь, но помню, что мне в итоге с этой темой помог разобраться курс «Основы и применение Python» на stepik, там тема отдельная про генераторы есть и итераторы. В общем, суть в том, что генератор это по сути просто напросто более удобная реализация итератора, а то, что здесь в этом видео про обходы сказано, вроде как неправильно, либо вообще не важно. Конкретно эту тему лучше там послушать, ещё перед этим видео про классы посмотреть, чтобы понятно было
@greeshanka8283
@greeshanka8283 Жыл бұрын
@@JxSol вот я тоже так подумал! вроде разницы нет, но она ведь есть!
@user-fz2jf5jk2q
@user-fz2jf5jk2q 3 жыл бұрын
def how_deep(x): n= 0 if isinstance(x, list): return 1 + max(how_deep(itm) for itm in x) return 0 print(how_deep([11,22,33,[12,21,32],[13,23,31,[14,25,34]]])) Привет. Это кусок кода возращает глубину вложенности массива данных (т.е. максимальное количество листов вложенных в лист). Обьясните пожалуйста, как это работает. Если проганяю через pytutor, то вижу формируется иерархия list_iterator instance, но что в них содержится пока не ясно.
@romanironov463
@romanironov463 3 жыл бұрын
погугли про рекурсивные функции)
@slava_zxz
@slava_zxz 6 ай бұрын
Разобрался?
@champloot
@champloot 2 жыл бұрын
Странно, у меня получалось несколько раз выводить один и тот же генератор несколько раз...
@latinic8674
@latinic8674 2 жыл бұрын
какая версия пайтона на видео?
@slava_zxz
@slava_zxz 6 ай бұрын
3
@Herifs
@Herifs 4 жыл бұрын
Так а зачем это? Ты так и не ответил на 2 вопрос
@user-gm8kf7jj1d
@user-gm8kf7jj1d 3 жыл бұрын
Если в переменной содержится большое количество значений то надо использовать гениратор для предотвращения ошибки MemoryError
@user-jh9vd1xo4g
@user-jh9vd1xo4g Жыл бұрын
Отписка.
@m_i_r_k
@m_i_r_k Жыл бұрын
Почему?
46 Генераторы списков Python | List comprehension
10:30
MEGA BOXES ARE BACK!!!
08:53
Brawl Stars
Рет қаралды 36 МЛН
Самое Романтичное Видео ❤️
00:16
Глеб Рандалайнен
Рет қаралды 4,7 МЛН
Я нашел кто меня пранкует!
00:51
Аришнев
Рет қаралды 4,1 МЛН
Looks realistic #tiktok
00:22
Анастасия Тарасова
Рет қаралды 76 МЛН
Морозов Иван собеседование python junior разработчик
1:02:31
Решаем тестовое задание на позицию junior python backend разработчик
21:18
𝐧𝐞𝐫𝐝𝐢𝐳𝐚𝐲-𝐜𝐨𝐝𝐞
Рет қаралды 13 М.
Как устроены итераторы в Python?
11:13
Хитрый питон
Рет қаралды 15 М.
Yield Python. Complete tutorial on Python generators from scratch
8:05
MEGA BOXES ARE BACK!!!
08:53
Brawl Stars
Рет қаралды 36 МЛН