从元组中获取一个值

有没有一种方法可以使用表达式从Python中的元组获取一个值?

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


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

我知道我能做到:

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

但这会给我的函数增加几十行,使其长度加倍。

503268 次浏览

你可以写

i = 5 + tup()[0]

元组可以像列表一样被索引。

元组和列表之间的主要区别在于元组是不可变的-您不能将元组的元素设置为不同的值,也不能像在列表中那样添加或删除元素。但除此之外,在大多数情况下,它们的工作原理几乎相同。

对于未来寻找答案的人,我想对这个问题给出一个更清晰的答案。

# for making a tuple
my_tuple = (89, 32)
my_tuple_with_more_values = (1, 2, 3, 4, 5, 6)


# to concatenate tuples
another_tuple = my_tuple + my_tuple_with_more_values
print(another_tuple)
# (89, 32, 1, 2, 3, 4, 5, 6)


# getting a value from a tuple is similar to a list
first_val = my_tuple[0]
second_val = my_tuple[1]


# if you have a function called my_tuple_fun that returns a tuple,
# you might want to do this
my_tuple_fun()[0]
my_tuple_fun()[1]


# or this
v1, v2 = my_tuple_fun()

希望这能为那些需要它的人进一步澄清问题。

一般的

可以以类似索引数组的方式访问ABC_0_元组的单个元素。

通过a[0]a[1],..这取决于元组中元素的数量。

例子

如果元组a=(3,"a")

  • a[0]产生3
  • a[1]产生"a"

对问题的具体回答

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

tup()返回2元组。

为了";求解";

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'