Это компактный способ создания списков с использованием одного выражения внутри квадратных скобок. Метод позволяет упростить создание списков путем применения выражения к каждому элементу последовательности (или другого итерируемого объекта) и добавления результата в новый список.
Основной синтаксис list comprehension выглядит следующим образом:
[выражение for элемент in итерируемый_объект if условие]
Примеры:
1. Создание списка квадратов чисел:
squares = [x**2 for x in range(10)]
print(squares)
# [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
2. Фильтрация элементов:
Создание списка только с четными числами:
even_numbers = [x for x in range(10) if x % 2 == 0]
print(even_numbers)
# [0, 2, 4, 6, 8]
3. Использование вложенных циклов:
pairs = [(x, y) for x in [1, 2, 3] for y in [3, 1, 4] if x != y]
print(pairs)
# [(1, 3), (1, 4), (2, 3), (2, 1), (2, 4), (3, 1), (3, 4)]
4. Преобразование и фильтрация строк:
sentence = «The quick brown fox»
words = [word.lower() for word in sentence.split() if len(word) > 3]
print(words)
# [‘quick’, ‘brown’]
List comprehension позволяет писать более чистый и компактный код, но иногда, при сложных операциях или вложенных циклах, конструкция могут стать менее читаемымой, чем традиционные циклы. В таких случаях рекомендуется использовать обычные циклы для ясности кода.