Назад к вопросам
Junior
62
questionbank
Какие существуют списковые генераторы в Python?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
В Python существуют следующие списковые генераторы (list comprehensions):
-
С базовым синтаксисом:
[выражение for элемент in итерируемый_объект]Применяетвыражениек каждомуэлементувитерируемый_объект. -
С условием фильтрации:
[выражение for элемент in итерируемый_объект if условие]Включает в список только теэлементы, для которыхусловиеистинно. -
С вложенными циклами:
[выражение for элемент1 in итер1 for элемент2 in итер2 ...]Аналогично вложенным цикламfor.
Примеры:
# Базовый синтаксис
squares = [x**2 for x in range(10)]
# [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
# С условием фильтрации
even_numbers = [x for x in range(20) if x % 2 == 0]
# [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
# С вложенными циклами
matrix = [[1, 2], [3, 4]]
flat_list = [item for row in matrix for item in row]
# [1, 2, 3, 4]
Помимо списковых генераторов (list comprehensions), существуют аналогичные генераторы для других структур данных:
- Генераторы словарей (dictionary comprehensions):
{ключ: значение for элемент in итерируемый_объект ...} - Генераторы множеств (set comprehensions):
{выражение for элемент in итерируемый_объект ...} - Генераторные выражения (generator expressions):
(выражение for элемент in итерируемый_объект ...)- важное отличие: возвращают итератор, а не весь список сразу, что экономит память для больших последовательностей.