Описание тега iterable-unpacking

Функция Python, в которой элементы итерации одновременно назначаются нескольким переменным, например, a, b, c = [1, 2, 3].

Итерационная распаковка (иногда известная как "распаковка кортежей", хотя эта концепция применяется в равной степени к любому итерируемому, а не только к кортежам) - это функция Python, которая позволяет присваивать элементы итерируемого объекта нескольким переменным:

>>> a, b, c = [1, 2, 3]
>>> a
1
>>> b
2
>>> c
3

Эта функция может использоваться для обмена значениями двух переменных без использования временной 'удерживающей' переменной, как это традиционно используется в других языках:

>>> a = 1
>>> b = 2
>>> a, b = b, a
>>> a
2
>>> b
1
>>> # rather than:
... a = 1
>>> b = 2
>>> temp = a
>>> a = b
>>> b = temp
>>> a
2
>>> b
1

Если количество элементов в итерации не соответствует количеству переменных в левой части присваивания, A ValueError Поднялся:

>>> d, e = 4, 5, 6
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: too many values to unpack (expected 2)
>>> f, g, h = 7, 8
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: need more than 2 values to unpack

Начиная с Python 3, расширенная итеративная распаковка позволяет назначать "запасные" элементы итерируемого списка (обратите внимание на*):

>>> x, *y, z = "kapow"
>>> x
'k'
>>> y
['a', 'p', 'o']
>>> z
'w'