Вопрос №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 ["кот", "собака", "лис"]}
Важно:
Не стоит злоупотреблять сложными вложенными генераторами списков — если выражение плохо читается, лучше использовать обычный цикл.
