Теория
Включение сжимает знакомый цикл
Включение не вводит новый способ мышления. Оно коротко записывает знакомую схему: создать коллекцию, пройти исходные значения и добавить преобразованный результат.
squares = []for number in range(1, 5): squares.append(number ** 2) short_squares = [number ** 2 for number in range(1, 5)]Читать короткую запись удобно справа налево по смыслу: берёмnumber из range, вычисляем его квадрат и помещаем результат в новый список.
Условие оставляет только подходящие элементы
- for последовательно получает каждое число.
- Условие number % 2 == 0 пропускает 1, 3 и 5.
- Для 2 и 4 вычисляется квадрат.
- Новый список равен [4, 16].
even_squares = [ number ** 2 for number in range(1, 6) if number % 2 == 0]print(even_squares)Форма скобок определяет коллекцию
Квадратные скобки создают список, фигурные с одним выражением — множество, а фигурные с парой ключ: значение — словарь. Выбирайте форму по требуемому результату, а не ради краткости.
words = ["мир", "код", "мир"]lengths = {word: len(word) for word in words}unique_lengths = {len(word) for word in words}print(lengths)print(unique_lengths)Краткость не должна прятать ход решения
- Назовите новую коллекцию. Список, множество или словарь?
- Найдите один источник. Какие элементы перебираются?
- Запишите одно преобразование. Что попадёт в результат?
- Добавьте простой фильтр. Только если часть элементов нужно пропустить.
- Разверните при сомнении. Если запись трудно объяснить как цикл, оставьте цикл.
Практика
Прочитайте списковое включение
Для 2, 4 и 6 выражение возвращает 3, 5 и 7 в том же порядке.
Примените фильтр
Из чисел 1–6 условию соответствуют 3 и 6.
Уберите повторы
Длины равны 3, 3 и 1; множество содержит только 3 и 1.
Соберите словарь
Слово «код» содержит три символа, поэтому словарь хранит пару «код»: 3.
Перепишите знакомый цикл
Последнее нечётное число — 7, его квадрат равен 49.
Итог
Вы умеете узнавать во включении обычный цикл и использовать короткую запись только там, где она остаётся прозрачной.
Дальше функции помогут дать вычислениям имена, а затем мы разберём, откуда цикл вообще получает очередной элемент.
Прогресс
0 / 5Вы ещё не решали задания