Обучающий курс: stepik.org/cou... Узнаете как задавать генераторы в языке Python и перебирать его элементы. Особенности работы с генераторами. Telegram-канал: t.me/python_se...
Святой человек!!! По всем плейлистам во всем ютубе лучшие видео! Если всё посмотреть и усвоить - можно стать ого-го. Очень помогает в работе. То одно нужно, то другое - сразу сюда! Даже нет минусов..только объем материала) - Спокойно, культурно, подробно, последовательно, структурировано. Так держать! Здоровья и удачи!
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)) # словарь
Хотелось бы для себя уяснить одну вещь касательно итераторов и генераторов - что первый, что второй не хранит значения в памяти? Потому что, читая в интернете статьи, непонятно касательно самих итераторов - одни говорят что хранит в памяти значения, другие говорят что нет. С генератором понятно - создаётся либо с помощью скобок "()" либо оператора yield и не хранит значения в памяти. Как тогда создаётся итератор обычным синтаксическим сахаром python? Или он создаётся только с помощью itertools? Как я понял из статей про итератор - это же по сути обычный магический метод iter, который может быть присущим к примеру списку, который хранится в свою очередь в памяти (вот это и хотел бы узнать) и поддерживает метод next? То есть применяя цикл for к итератору - мы храним данные в памяти, или исчерпываем себя, как генератор?
есть генератор, итератор и итерируемый объект. Итератор перебирает итерируемый объект. Например обычный список [0, 1, 2, 3] - это итерируемый объект, будет хранится в памяти. Итератор - это цикл for. генератор (ф-я range) - может создавать итерируемый объект, который не будет хранится в памяти.
Если генератор передаем в такую функцию, как max,min, sum, tuple, list, set или им подобные, то скобки не обязательно удваивать. Т.е. можно записать,например, sum(x**2 for x in range(5)) вместо sum((x**2 for x in range(5))).