解压 list/tuple 中的前两个元素

在 Python 中有没有这样的方法:

a, b, = 1, 3, 4, 5

然后:

>>> a
1
>>> b
3

上面的代码不工作,因为它将引发

ValueError: too many values to unpack

75259 次浏览

您可以使用 _来表示您想要“抛弃”的变量

>>> a, b, _ = 1, 3, 4
>>> a
1
>>> b
3

为了补充 Nolen 的答案,在 Python3中,您还可以解压其余部分,如下所示:

>>> a, b, *rest = 1, 2, 3, 4, 5, 6, 7
>>> a
1
>>> rest
[3, 4, 5, 6, 7]

不幸的是,这在 Python2中不起作用。

或者在 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

在 Python3上,你可以做以下事情:

>>> a, b, *_ = 1, 3, 4, 5
>>> a
1
>>> b
3

_只是您不需要的值的占位符

对于您所显示的文字,没有办法做到这一点。但是你可以通过切片来达到你想要的效果:

a, b = [1, 3, 4, 5, 6][:2]

要获取列表的 前两个值:

a, b = my_list[:2]