Лямбда-выражения
Пару недель назад мы получили вопрос от читателя, который и сподвиг нас на написание данной статьи. Вопрос был такой: «Почему объект типа x = map(lambda x: x * 2, [1 ,2, 3, 4, 5]) совсем не занимает места, а вот после применения функции list(x) к данному объекту в памяти оказываются все значения этого выражения?»
Мы надеемся, что на данный момент вы уже понимаете, что тут происходит. Объект на выходе функции map также ленивый и может быть проитерирован. Вычисление x * 2 выполняется только для одного элемента в каждом цикле. Если вы примените функцию list(x), то вычислите сразу все элементы списка. Таким образом, если вы хотите итерировать объект map, функцию list() применять не нужно.
Post #615
16.4K
