Получение одного значения из кортежа


153

Есть ли способ получить одно значение из кортежа в Python, используя выражения?

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

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

Я знаю, что могу это сделать:

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

Но это добавило бы несколько десятков строк к моей функции, удвоив ее длину.


1
Это _также просто переменная. Он просто часто используется для присвоения ему значения, которое можно отбросить. Но теоретически вы можете получить значение из_
Info-Screen

Ответы:


203

Ты можешь написать

i = 5 + tup()[0]

Кортежи могут быть проиндексированы как списки.

Основное различие между кортежами и списками состоит в том, что кортежи являются неизменяемыми - вы не можете устанавливать элементы кортежа с разными значениями или добавлять или удалять элементы, как вы можете из списка. Но кроме этого, в большинстве ситуаций они работают почти одинаково.


54

Для любого, кто ищет ответ в будущем, я хотел бы дать более четкий ответ на этот вопрос.

# 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()

Надеюсь, что это прояснит ситуацию для тех, кто в этом нуждается.


1
Спасибо за обновление. Для полноты вы можете добавить использование подчеркивания в качестве «фиктивного» заполнителя при распаковке кортежей.
Эмиль
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.