2010-06-28 13 views
78

¿Hay alguna forma de obtener un valor de una tupla en python usando expresiones?Obteniendo un valor de una tupla de python

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

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

Sé que puedo hacer esto:

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

Pero eso sería añadir unas pocas docenas de líneas a mi función, duplicar su longitud.

+0

El '_' es también sólo una variable. Simplemente se usa para asignarle valor que puede descartarse. Pero teóricamente puede obtener el valor de '_' –

Respuesta

117

Puede escribir

i = 5 + Tup()[0] 

tuplas pueden ser indexados al igual que las listas.

La principal diferencia entre las tuplas y las listas es que las tuplas son inmutables: no puede establecer los elementos de una tupla con valores diferentes, ni agregar o eliminar elementos como puede de una lista. Pero aparte de eso, en la mayoría de las situaciones, funcionan más o menos igual.

+1

Bingo! Pero eso nos lleva a otra pregunta: ¿cuál es la diferencia entre una tupla y una lista? ¿O hay uno? – BCS

+6

tuple es inmutable –

+2

@BCS: Parece que he editado la respuesta a su comentario mientras escribía ;-) –

25

Para cualquier persona en el futuro en busca de una respuesta, me gustaría dar una respuesta más clara a la pregunta

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

Espero que esto aclare aún más las cosas para alguien

+0

Gracias por la actualización. Para completar, es posible que desee agregar el uso del guión bajo como marcador de posición "ficticio" en el desempaquetado de tuplas. – Emile

+0

y si Tup es una función que devuelve una tupla, podemos cambiar su nombre a TupFxn. Tup parece una palabra clave/función/builtin de python – kdubs

Cuestiones relacionadas