Ответ 1
Чтобы добавить к Nolen ответ, в Python 3 вы также можете распаковать остальные, например:
>>> a, b, *rest = 1, 2, 3, 4, 5, 6, 7
>>> a
1
>>> rest
[3, 4, 5, 6, 7]
К сожалению, в Python 2 это не работает.
Есть ли способ в python сделать вот так:
a, b, = 1, 3, 4, 5
И затем:
>>> a
1
>>> b
3
(Вышеприведенный код не работает, поскольку он бросает ValueError: too many values to unpack
.)
Чтобы добавить к Nolen ответ, в Python 3 вы также можете распаковать остальные, например:
>>> a, b, *rest = 1, 2, 3, 4, 5, 6, 7
>>> a
1
>>> rest
[3, 4, 5, 6, 7]
К сожалению, в Python 2 это не работает.
Нет никакого способа сделать это с литералами, которые вы показали. Но вы можете нарезать, чтобы получить желаемый эффект:
a, b = [1, 3, 4, 5, 6][:2]
Если ваш фактический код пытается получить первые два значения списка (например), вот как вы это сделаете:
a, b = my_list[:2]
В Python 3 вы можете сделать следующее:
>>> a, b, *_ = 1, 3, 4, 5
>>> a
1
>>> b
3
_
является просто владельцем места для значений, которые вам не нужны.
Вы можете использовать _
для представления переменных, которые вы хотели "выбросить"
>>> a, b, _ = 1, 3, 4
>>> a
1
>>> b
3
Или в Python 3.x вы можете сделать это:
a, *b = 1, 3, 4
дает вам:
In [15]: a
Out[15]: 1
In [16]: b
Out[16]: [3, 4]
Это позволит избежать исключения, хотя вам придется разбирать b
. Предположим, что вы хотите иметь две переменные слева от =
, иначе вы могли бы использовать
a, b, *ignore = ....
с v3.x