2012-03-02 12 views
26

Si tengo una tupla como (1,2,3,4) y quiero asignar 1 y 3 para las variables a y b, obviamente, podría decirIgnorar parte de una tupla Python

myTuple = (1,2,3) 
a = my_tuple[0] 
b = myTuple[2] 

O algo así

(a,_,b,_) = myTuple 

¿Hay alguna manera de poder descomprimir los valores, pero ignorar uno o más de ellos?

+2

'a, _, b = myTuple' es una expresión bastante común. Para ser honesto, no veo mucho mal con eso. – NPE

+0

¿Cuál es el problema al tener '_ == 2'? Nadie va a usar '_' después en el código. –

+1

¿Qué ocurre si quiero ignorar dos partes de la tupla? Actualizaré la pregunta –

Respuesta

10

Su solución está bien en mi opinión. Si realmente tiene un problema con la asignación de _, entonces puede definir una lista de índices y hacer:

a = (1, 2, 3, 4, 5) 
idxs = [0, 3, 4] 
a1, b1, c1 = (a[i] for i in idxs) 
35

personalmente me escribo:

a, _, b = myTuple 

Este es un lenguaje bastante común, por lo que es ampliamente entendido. Encuentro la sintaxis clara como el cristal.

+4

Me gustaría notar que en el intérprete de python '_' se asigna al resultado de la última expresión (por lo tanto, si escribe' 'hi'' y pulsa enter, '' es' hi'') hasta que haga algo como este en el que le asigna un valor, entonces nunca funcionará como lo hizo antes. – 2rs2ts

Cuestiones relacionadas