Отримання одного значення з кортежу


152

Чи є спосіб отримати одне значення з кортежу в Python, використовуючи вирази?

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

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

Я знаю, що можу це зробити:

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

Але це додало б моїй функції кілька десятків рядків, подвоївши її довжину.


1
Це _також просто змінна. Він просто використовується для присвоєння йому значення, яке можна відкинути. Але теоретично ви можете отримати значення з_
Info-Screen

Відповіді:


202

Можна писати

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.