Назад к вопросам
Junior
62
questionbank

Какие существуют списковые генераторы в Python?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

В Python существуют следующие списковые генераторы (list comprehensions):

  1. С базовым синтаксисом: [выражение for элемент in итерируемый_объект] Применяет выражение к каждому элементу в итерируемый_объект.

  2. С условием фильтрации: [выражение for элемент in итерируемый_объект if условие] Включает в список только те элементы, для которых условие истинно.

  3. С вложенными циклами: [выражение 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 итерируемый_объект ...) - важное отличие: возвращают итератор, а не весь список сразу, что экономит память для больших последовательностей.