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

时间:2012-07-07 00:15:35

标签: python

python中有没有办法像这样做:

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

然后:

>>> a
1
>>> b
3

(上面的代码不起作用,因为它会抛出ValueError: too many values to unpack。)

6 个答案:

答案 0 :(得分:68)

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

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

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

答案 1 :(得分:45)

没有办法用你所展示的文字来做。但你可以切片以获得你想要的效果:

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

获取列表的前两个值:

a, b = my_list[:2]

答案 2 :(得分:15)

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

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

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

答案 3 :(得分:3)

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

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

答案 4 :(得分:0)

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

答案 5 :(得分:0)

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

_
[4, 5]