Вебинары Разобраться в IT Реферальная программа Тесты
Программирование Аналитика Дизайн Маркетинг Управление проектами
21 Мар 2024
2 мин
521

Генераторы и списковые включения в Python

Пройдите тест, узнайте какой профессии подходите

В Python есть два мощных инструмента для быстрого и удобного создания списков: генераторы и списковые включения. Оба они позволяют создавать списки на

В Python есть два мощных инструмента для быстрого и удобного создания списков: генераторы и списковые включения. Оба они позволяют создавать списки на лету, применяя определенные операции к каждому элементу исходного списка или другого итерируемого объекта.

Например, предположим, что есть список чисел, и необходимо умножить каждое число на 2. Это можно сделать так:

numbers = [1, 2, 3, 4, 5]
doubled_numbers = [number * 2 for number in numbers]
print(doubled_numbers)  # Вывод: [2, 4, 6, 8, 10]

Здесь использовано списковое включение. Но то же самое можно сделать и с помощью генератора:

numbers = [1, 2, 3, 4, 5]
doubled_numbers = (number * 2 for number in numbers)
print(list(doubled_numbers))  # Вывод: [2, 4, 6, 8, 10]

На первый взгляд разница не очевидна, но она есть.

Списковые включения создают новый список и заполняют его результатами выполнения некоторого выражения. Это значит, что все результаты вычисляются сразу, и новый список занимает место в памяти.

Генераторы, с другой стороны, не создают список целиком. Вместо этого они создают объект-генератор, который «помнит» исходный список и выражение, которое нужно применить. Когда от генератора требуют следующий элемент, он вычисляет его на лету и возвращает. Это позволяет экономить память, особенно если исходный список большой.

Таким образом, если нужно создать новый список и работать с ним, удобно использовать списковые включения. А если нужно применить операцию к элементам списка, но сам список не нужен (например, просто нужно пройтись по его элементам и что-то с ними сделать), то лучше использовать генераторы.

Добавить комментарий