Python Glossary English

все Python 3Циклыконструкция

Распаковка в for

цикл for

При итерации по последовательности кортежей (или других итерируемых) можно сразу распаковывать элементы в несколько переменных прямо в заголовке for.

Синтаксис

for x, y in iterable: ...
for a, b, c in iterable: ...

Число переменных в заголовке должно точно совпадать с числом элементов в каждом кортеже — иначе на этой итерации вылетит ValueError (not enough / too many values to unpack), причём уже в рантайме, а не при разборе кода. Если длина «хвоста» плавает, выручает звёздочка: for first, *rest in ... соберёт остаток в список. А вложенная распаковка вроде for i, (x, y) in enumerate(...) требует скобок вокруг внутренней пары — без них Python будет ждать три отдельные переменные.

Примеры

for x, y in [(1, 2), (3, 4), (5, 6)]:
    print(x + y, end=" ")  # → 3 7 11
pairs = {"a": 1, "b": 2, "c": 3}
for k, v in pairs.items():
    print(f"{k}={v}", end=" ")  # → a=1 b=2 c=3
for i, (x, y) in enumerate([(1, 2), (3, 4)]):
    print(i, x, y)  # → 0 1 2 / 1 3 4
for a, *rest in [(1, 2, 3), (4, 5, 6)]:
    print(a, rest)  # → 1 [2, 3] / 4 [5, 6]

См. также

Частые ошибки

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