#54. Выражения генераторы | Python для начинающих
Вставка
- Опубліковано 17 жов 2021
- Обучающий курс: stepik.org/course/100707
Узнаете как задавать генераторы в языке Python и перебирать его элементы. Особенности работы с генераторами.
Telegram-канал: t.me/python_selfedu
Святой человек!!! По всем плейлистам во всем ютубе лучшие видео! Если всё посмотреть и усвоить - можно стать ого-го. Очень помогает в работе. То одно нужно, то другое - сразу сюда! Даже нет минусов..только объем материала) - Спокойно, культурно, подробно, последовательно, структурировано. Так держать! Здоровья и удачи!
Урааа! Утро начинается хорошо когда есть новый видос, на Вашем канале!!!!!
Очень полезный урок, как и весь курс! Ваша работоспособность и результат впечатляют! Большое спасибо!
Ну вот и до генераторов- выражений дошли) Спасибо Сергей!
Спасибо. Все понятно
Лучшее видео по всем темам!! Лучший автор!! Спасибо!!
Спасибо, всегда рад новому видео!!!
Очень интересно...Много нового и полезного. Спасибо!
очередное большое спасибо)
спасибо!👍
спасибо
11:12 "Генераторов кортежей не существует". Все-таки можно сгенерировать кортеж, но не при помощи скобок ,а с помощью имени типа. Например,
tuple(x**2 for x in range(5))
создаст кортеж. Аналогично, можно создать список, словарь и множество из генератора не при помощи формы скобок, а при помощи имени типа:
list(x**2 for x in range(5)) # список
set(x**2 for x in range(5)) # множество
dict((x,x**2) for x in range(5)) # словарь
это все же будет не генератор кортежей как таковой, а генератор + функция tuple, которая формирует кортеж с помощью генератора
👍👍👍👍👍
👍
Если генератор передаем в такую функцию, как max,min, sum, tuple, list, set или им подобные, то скобки не обязательно удваивать. Т.е. можно записать,например,
sum(x**2 for x in range(5)) вместо sum((x**2 for x in range(5))).
не только "не обязательно", но и, если верить chatgpt, не желательно:
Спасибо!
Хотелось бы для себя уяснить одну вещь касательно итераторов и генераторов - что первый, что второй не хранит значения в памяти? Потому что, читая в интернете статьи, непонятно касательно самих итераторов - одни говорят что хранит в памяти значения, другие говорят что нет. С генератором понятно - создаётся либо с помощью скобок "()" либо оператора yield и не хранит значения в памяти. Как тогда создаётся итератор обычным синтаксическим сахаром python? Или он создаётся только с помощью itertools? Как я понял из статей про итератор - это же по сути обычный магический метод iter, который может быть присущим к примеру списку, который хранится в свою очередь в памяти (вот это и хотел бы узнать) и поддерживает метод next? То есть применяя цикл for к итератору - мы храним данные в памяти, или исчерпываем себя, как генератор?
почти все верно, только итератор к хранению вообще не имеет никакого отношения - это интерфейс перебора значения генератора не более того
есть генератор, итератор и итерируемый объект. Итератор перебирает итерируемый объект.
Например
обычный список [0, 1, 2, 3] - это итерируемый объект, будет хранится в памяти.
Итератор - это цикл for.
генератор (ф-я range) - может создавать итерируемый объект, который не будет хранится в памяти.
хм, решил потестить
lst = [x for x in range(1000000000)]
комп повис, пришлось с кнопки перезагружать. Ошибки memory error не было. 16 гигов мало
В случае sum((i ** 2 for i in range(10))) лучше писать sum(i ** 2 for i in range(10)) ПО времени не проверял но результат тот же
так это же одно и то же )
@@selfedu_rus количество скобок разное)
сколько всего видео в данном курсе вы планируете?
65
Скажите пожалуйста, а по ООП уроки будут ?)
да, делаю, скоро обновлю
@@selfedu_rus Это крутая новость, Если честно сказать праздник и сказка
@@selfedu_rus ооп будет в этом курсе или создадите новый курс?
@@andreychernykh256 будет отдельный
А где взять практические задания?
Ссылка под видео
@@selfedu_rus Спасибо, уже на сайте не увидел сразу ссылку перехода на задания после видео.
Есть ли способ повторно запустить генератор?
заново его инициализировать (функция iter)
👍🏿👍🏿