Python Glossary English

все Python 3Списки (list)функция

Списочные выражения (list comprehension)

comprehension

Компактный синтаксис создания списка с необязательной фильтрацией. Быстрее эквивалентного цикла for+append.

Синтаксис

[expr for var in iterable [if cond]]

Переменная цикла живёт только внутри выражения и наружу не утекает — одноимённая переменная снаружи останется нетронутой. При вложенности for-части читаются слева направо, как во вложенном цикле, а список строится в памяти целиком: для больших или бесконечных потоков берите генераторное выражение в круглых скобках.

Примеры

squares = [x**2 for x in range(6)]
print(squares)
# → [0, 1, 4, 9, 16, 25]
evens = [x for x in range(10) if x % 2 == 0]
print(evens)
# → [0, 2, 4, 6, 8]
pairs = [(x, y) for x in [1, 2] for y in [3, 4]]
print(pairs)
# → [(1, 3), (1, 4), (2, 3), (2, 4)]
words = ['hello', 'world', 'python']
upper = [w.upper() for w in words]
print(upper)
# → ['HELLO', 'WORLD', 'PYTHON']
flat = [x for row in [[1,2],[3,4],[5,6]] for x in row]
print(flat)
# → [1, 2, 3, 4, 5, 6]
mapped = [x if x > 0 else 0 for x in [-1, 2, -3, 4]]
print(mapped)
# → [0, 2, 0, 4]
digits = [int(c) for c in '12345']
print(digits)
# → [1, 2, 3, 4, 5]
nested = [[i*j for j in range(1, 4)] for i in range(1, 4)]
print(nested)
# → [[1, 2, 3], [2, 4, 6], [3, 6, 9]]

См. также

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