Python Glossary English

все Python 3Списки (list)понятие

Условный list comprehension

comprehension

Фильтрующий if в конце list comprehension отбирает элементы по условию. Не путать с тернарным оператором (if ... else ...) в начале выражения — тот преобразует, а не фильтрует.

Синтаксис

[выражение for x in iterable if условие]

Фильтрующий if ставится после for и идёт без else: [x if x > 0 for x in lst] — SyntaxError, а [x if x > 0 else 0 for x in lst] уже не отбор, а замена значений. Обе конструкции можно совместить в одном выражении — тернарник впереди преобразует, if в конце отбирает.

Примеры

lst = [1, -2, 3, -4, 5]
print([x for x in lst if x > 0])           # → [1, 3, 5]
print([x**2 for x in lst if x % 2 != 0])   # → [1, 9, 25]
words = ["apple", "hi", "banana", "ok"]
print([w for w in words if len(w) > 3])     # → ['apple', 'banana']
print([x if x > 0 else 0 for x in lst])    # → [1, 0, 3, 0, 5]  (тернарный)

См. также

Открыть в полном глоссарииdocs.python.orgСообщить о неточности