2010-06-28 51 views
78

有没有办法从python中的元组中使用表达式获取一个值?从python元组中获取一个值

def Tup(): 
    return (3,"hello") 

i = 5 + Tup(); ## I want to add just the three 

我知道我能做到这一点:

(j,_) = Tup() 
i = 5 + j 

但是,这将几十行添加到我的功能,增加了一倍的长度。

+0

的'_'也只是变量。它通常用于为其分配可丢弃的值。但理论上你可以从'_' – 2017-03-08 15:52:56

回答

117

你可以写

i = 5 + Tup()[0] 

元组可以被索引就像名单。

元组和列表之间的主要区别是元组是不可变的 - 你不能将元组的元素设置为不同的值,或者像你可以从列表中添加或删除元素。但除此之外,在大多数情况下,他们的工作几乎相同。

+1

宾果获得价值!但是在另一个问题上拖延了:元组和列表之间的区别是什么?还是有一个? – BCS 2010-06-28 20:58:33

+6

元组是不可变的 – 2010-06-28 21:00:05

+2

@BCS:看起来像我在编写它时在您的评论的答案中编辑的;-) – 2010-06-28 21:00:09

25

对于任何人在未来寻找一个答案,我想给一个更清晰的答案的问题

# for making a tuple 

MyTuple = (89,32) 
MyTupleWithMoreValues = (1,2,3,4,5,6) 

# To concatinate tuples 
AnotherTuple = MyTuple + MyTupleWithMoreValues 
print AnotherTuple 

# it should print 89,32,1,2,3,4,5,6 

# To get Value from tuple 
firstVal = MyTuple[0] 
secondVal = MyTuple[1] 


# usage is more like a list 

# if you got a function that returns tuple than you might do this 
Tup()[0] 
Tup()[1] 

#or This 
v1,v2 = Tup() 

希望这将清除的东西还为别人

+0

感谢您的更新。为了完整起见,您可能希望在元组解包中添加使用下划线作为“虚拟”占位符。 – Emile 2016-04-08 09:36:57

+0

如果Tup是返回元组的函数,我们可以将其名称更改为TupFxn。 Tup看起来像一个python关键字/ function/builtin – kdubs 2017-03-21 17:32:54