Pobieranie jednej wartości z krotki

152

Czy istnieje sposób na pobranie jednej wartości z krotki w Pythonie przy użyciu wyrażeń?

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

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

Wiem, że potrafię to zrobić:

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

Ale to dodałoby kilka tuzinów linii do mojej funkcji, podwajając jej długość.

BCS
źródło
1
To _także jest tylko zmienną. Jest często używany do przypisywania mu wartości, którą można odrzucić. Ale teoretycznie można uzyskać wartość z_
Ekran informacyjny,

Odpowiedzi:

202

Możesz pisać

i = 5 + tup()[0]

Krotki mogą być indeksowane tak samo jak listy.

Główna różnica między krotkami a listami polega na tym, że krotki są niezmienne - nie można ustawić elementów krotki na różne wartości ani dodawać ani usuwać elementów, tak jak to możliwe z listy. Ale poza tym w większości sytuacji działają prawie tak samo.

David Z
źródło
54

Każdemu, kto w przyszłości szuka odpowiedzi, chciałbym udzielić dużo jaśniejszej odpowiedzi na to pytanie.

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

Mam nadzieję, że to jeszcze bardziej wyjaśni sprawy tym, którzy tego potrzebują.

AbdulMueed
źródło
1
Dziękuję za aktualizację. Dla kompletności możesz dodać podkreślenie jako symbol zastępczy „fikcyjnego” podczas rozpakowywania krotki.
Emile