有没有一种在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中不起作用。
*_
比 *rest
更好? - Kenly按照你所展示的文字,无法实现它。但你可以使用切片来达到想要的效果:
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
a,b,_ = 1,3,4,5
。 - Hanfei Suna, b, _, _ = 1, 3, 4, 5
这样的事情,这很快就会变得丑陋。老实说,我认为只需获取一个列表并使用 [:2]
更有意义,也更符合 Python 的风格。 - Nolen Royalty(x,_,z,h) = coord
而不是(x,z,h) = coord[:1]+coord[2:]
,那么这种方法效果很好。对于更大的元组,你最终会得到像(_,_,c,_,e,f,_) = something
这样的东西,这可能比混乱的索引访问要好一些。 - Zoey Hewll或者在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版本