2010-06-28 10 views
78

Czy istnieje sposób na uzyskanie jednej wartości z krotki w python za pomocą wyrażeń?Uzyskiwanie jednej wartości z krotki python

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

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

wiem, że mogę to zrobić:

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

Ale to by dodać kilkadziesiąt linii do mojej funkcji, podwajając jego długość.

+0

Opcja '_' jest również po prostu zmienna. Po prostu często przypisuje się do niego wartość, którą można odrzucić. Ale teoretycznie możesz uzyskać wartość z '_' –

Odpowiedz

117

Możesz napisać

i = 5 + Tup()[0] 

Krotki mogą być indeksowane tak jak list.

Główna różnica między krotkami i 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 takich, jak z listy. Ale poza tym w większości sytuacji działają prawie tak samo.

+1

Bingo! Ale to pociąga za sobą kolejne pytanie: jaka jest zatem różnica między krotką a listą? A może jest jeden? – BCS

+6

tuple is immutable –

+2

@BCS: Wygląda na to, że edytowałem w odpowiedzi na Twój komentarz podczas pisania ;-) –

25

Dla ktokolwiek w przyszłości patrząc na odpowiedź, chciałbym dać jaśniejszego odpowiedź na pytanie

# 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 

# To get Value from tuple 
firstVal = MyTuple[0] 
secondVal = MyTuple[1] 


# usage is more like a list 

# if you got a function that returns tuple than you might do this 
Tup()[0] 
Tup()[1] 

#or This 
v1,v2 = Tup() 

nadzieję, że to czyści rzeczy dalej kogoś

+0

Dzięki za aktualizację. Aby uzyskać kompletność, możesz dodać użycie podkreślnika jako "obojętnego" symbolu zastępczego podczas rozpakowywania krotek. – Emile

+0

i jeśli Tup jest funkcją, która zwraca krotkę, możemy zmienić jej nazwę na TupFxn. Tup wygląda jak słowo kluczowe python/function/builtin – kdubs

Powiązane problemy