从python元组中获取一个值

时间:2010-06-28 20:55:35

标签: python tuples

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

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

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

我知道我可以这样做:

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

但是这会给我的功能增加几十行,使其长度增加一倍。

3 个答案:

答案 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'