Python 3.0+Списки (list)понятие
Распаковка списка — *
распаковка
Распаковка позволяет присвоить элементы переменным. * захватывает остаток как список.
Синтаксис
a, b, *rest = lst | *head, last = lst | a, *_, b = lst
Без звёздочки число переменных слева должно совпадать с числом элементов точь-в-точь, иначе ValueError с текстом вроде not enough values to unpack; звёздочка снимает это ограничение, но в одной цели она может быть только одна. Переменная со звёздочкой всегда получает список — даже если справа кортеж или строка и даже если захватывать нечего (тогда пустой список).
Примеры
a, b, c = [1, 2, 3]
print(a, b, c)
# → 1 2 3
first, *rest = [1, 2, 3, 4, 5]
print(first, rest)
# → 1 [2, 3, 4, 5]
*head, last = [1, 2, 3, 4, 5]
print(head, last)
# → [1, 2, 3, 4] 5
a, *_, b = [1, 2, 3, 4, 5]
print(a, b)
# → 1 5
lst1, lst2 = [1, 2, 3], [4, 5]
combined = [*lst1, *lst2]
print(combined)
# → [1, 2, 3, 4, 5]
def func(*args): return sum(args)
nums = [1, 2, 3]
print(func(*nums))
# → 6
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности