Описание тега 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'