如果我有一个像
(1,2,3,4)
这样的元组,并且我想将 1 和 3 分配给变量 a 和 b,我显然可以说
myTuple = (1,2,3,4)
a = myTuple[0]
b = myTuple[2]
或者类似的东西
(a,_,b,_) = myTuple
有没有一种方法可以解压这些值,但忽略其中的一个或多个?
我个人会写:
a, _, b = myTuple
这是一个非常常见的习语,因此被广泛理解。我发现语法非常清晰。
您可以使用
*_
捕获未知数量的元素。
first, *_, one_before_last, _ = 1,2,3,4,5,6,7,8,9
给予:
first = 1
one_before_last = 8
我认为你的解决方案很好。如果您确实在分配 _ 时遇到问题,那么您可以定义一个索引列表并执行以下操作:
a = (1, 2, 3, 4, 5)
idxs = [0, 3, 4]
a1, b1, c1 = (a[i] for i in idxs)
请注意,您可以对源元组进行切片,如下所示:
a,b = some_tuple[0:2]