忽略Python元组的一部分

问题描述 投票:0回答:4

如果我有一个像

(1,2,3,4)
这样的元组,并且我想将 1 和 3 分配给变量 a 和 b,我显然可以说

myTuple = (1,2,3,4)
a = myTuple[0]
b = myTuple[2]

或者类似的东西

(a,_,b,_) = myTuple

有没有一种方法可以解压这些值,但忽略其中的一个或多个?

python tuples iterable-unpacking
4个回答
87
投票

我个人会写:

a, _, b = myTuple

这是一个非常常见的习语,因此被广泛理解。我发现语法非常清晰。


25
投票

您可以使用

*_
捕获未知数量的元素。

first, *_, one_before_last, _ = 1,2,3,4,5,6,7,8,9

给予:

first = 1   
one_before_last = 8

20
投票

我认为你的解决方案很好。如果您确实在分配 _ 时遇到问题,那么您可以定义一个索引列表并执行以下操作:

a = (1, 2, 3, 4, 5)
idxs = [0, 3, 4]
a1, b1, c1 = (a[i] for i in idxs)

7
投票

请注意,您可以对源元组进行切片,如下所示:

a,b = some_tuple[0:2]
© www.soinside.com 2019 - 2024. All rights reserved.