60

Python中有没有办法这样做:

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

进而:

>>> a
1
>>> b
3

上面的代码不起作用,因为它会抛出

ValueError: too many values to unpack

4

5 回答 5

114

只是为了添加到 Nolen 的答案,在 Python 3 中,您还可以解压缩其余部分,如下所示:

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

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

于 2012-07-07T00:19:53.153 回答
61

没有办法使用您显示的文字来做到这一点。但是你可以切片得到你想要的效果:

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

要获取列表的前两个值:

a, b = my_list[:2]
于 2012-07-07T00:22:03.407 回答
28

在 Python 3 上,您可以执行以下操作:

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

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

于 2012-07-07T00:20:48.877 回答
6

你可以用它_来表示你想“扔掉”的变量

>>> a, b, _ = 1, 3, 4
>>> a
1
>>> b
3
于 2012-07-07T00:17:16.480 回答
2

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

于 2012-07-07T00:19:55.530 回答