2012-03-02 58 views
26

如果我有这样一个元组的(1,2,3,4),我要指派1和3变量a和b,我可以明明说忽略一个Python元组的一部分

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

或者类似的东西

(a,_,b,_) = myTuple 

有没有办法可以解压值,但忽略它们中的一个或多个?

+2

'a,_,b = myTuple'是一个非常常见的用法。说实话,我并没有看到太多错误。 – NPE 2012-03-02 11:35:27

+0

“_ == 2”有什么问题?在代码中没有人会使用'_'。 – 2012-03-02 11:36:33

+1

如果我想忽略元组的两部分,该怎么办?我会更新 – 2012-03-02 11:41:32

回答

10

您的解决方案在我看来很好。如果确实存在分配_的问题,那么您可以定义索引列表,然后执行以下操作:

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

我个人会写:

a, _, b = myTuple 

这是一个相当常见的成语,所以它的广泛理解。我觉得语法清晰。

+4

我想说明的是,在python解释器中,'_'被分配给最后一个表达式的结果(所以如果你输入''hi''并敲入enter,然后'_ is'hi''),直到你做了一些事情像这样你为它赋值,那么它将永远不会像以前那样工作。 – 2rs2ts 2015-10-13 17:47:41