Вопрос15
Осталось:

Что такое генераторы списков и как их использовать?

Образцовый ответ

Показывать ответ по умолчанию

Генератор списков (list comprehension) — это краткий способ создания нового списка на основе существующей коллекции в одну строку.

Синтаксис:

[выражение for элемент in итерируемый_объект]

Примеры:

# Квадраты чисел
squares = [x ** 2 for x in range(6)]
# [0, 1, 4, 9, 16, 25]

# Эквивалент с циклом
squares = []
for x in range(6):
    squares.append(x ** 2)

С условием (фильтрация):

# Только чётные числа
evens = [x for x in range(10) if x % 2 == 0]
# [0, 2, 4, 6, 8]

С условием if/else (преобразование):

labels = ["чёт" if x % 2 == 0 else "нечёт" for x in range(5)]
# ['чёт', 'нечёт', 'чёт', 'нечёт', 'чёт']

Вложенные генераторы списков:

# Таблица умножения
matrix = [[i * j for j in range(1, 4)] for i in range(1, 4)]
# [[1, 2, 3], [2, 4, 6], [3, 6, 9]]

Аналоги для других типов:

# Dict comprehension
squares_dict = {x: x ** 2 for x in range(5)}

# Set comprehension
unique_lengths = {len(word) for word in ["кот", "собака", "лис"]}

Важно:

Не стоит злоупотреблять сложными вложенными генераторами списков — если выражение плохо читается, лучше использовать обычный цикл.