有没有办法在python中使用表达式从元组中获取一个值?
def Tup():
return (3,"hello")
i = 5 + Tup(); ## I want to add just the three
我知道我可以这样做:
(j,_) = Tup()
i = 5 + j
但是这会给我的功能增加几十行,使其长度增加一倍。
答案 0 :(得分:170)
你可以写
i = 5 + Tup()[0]
元组可以像列表一样编入索引。
元组和列表之间的主要区别在于元组是不可变的 - 您不能将元组的元素设置为不同的值,或者从列表中添加或删除元素。但除此之外,在大多数情况下,它们的工作方式基本相同。
答案 1 :(得分:39)
对于将来寻找答案的人,我想对这个问题给出更明确的答案。
# 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
# getting a value from a tuple is similar to a list
firstVal = MyTuple[0]
secondVal = MyTuple[1]
# if you have a function called MyTupleFun that returns a tuple,
# you might want to do this
MyTupleFun()[0]
MyTupleFun()[1]
# or this
v1,v2 = MyTupleFun()
希望这能让某些人进一步清理。
答案 2 :(得分:1)
可以访问元组 a
的单个元素 - 以类似索引数组的方式 -
通过 a[0]
, a[1]
, ... 取决于元组中元素的数量。
如果您的元组是 a=(3,"a")
a[0]
产生 3
,a[1]
产生 "a"
def tup():
return (3, "hello")
tup()
返回一个二元组。
为了“解决”
i = 5 + tup() # I want to add just the three
您选择3
tup()[0| #first element
总共是这样
i = 5 + tup()[0]
使用 namedtuple 允许您通过名称(和索引)访问元组元素。详情请见 https://docs.python.org/3/library/collections.html#collections.namedtuple
>>> import collections
>>> MyTuple=collections.namedtuple("MyTuple", "mynumber, mystring")
>>> m = MyTuple(3, "hello")
>>> m[0]
3
>>> m.mynumber
3
>>> m[1]
'hello'
>>> m.mystring
'hello'