2010-07-10 49 views

Respuesta

9
>>> t = [("asdf",)] 
>>> t[0][0] 
'asdf' 
16

Trate

(value,), = t 

Es mejor que t[0][0], ya que también afirma que su lista contiene exactamente 1 1 tupla con valor en ella.

+0

Acabo de probar esto y no funciona. Desafortunadamente no se aleja de la lista inicial. –

+0

El ejemplo en la pregunta funciona. ¿Qué trataste de hacer exactamente? – Lior

+0

Mis disculpas, lo intenté de nuevo y funciona. No estoy seguro de por qué no funcionó antes; todo lo que puedo pensar es que dejé ',' después del 'valor'. –

0

Trate [(val,)] = t

In [8]: t = [("asdf",)] 

In [9]: (val,) = t 

In [10]: val 
Out[10]: ('asdf',) 

In [11]: [(val,)] = t 

In [12]: val 
Out[12]: 'asdf' 

no creo que hay una manera limpia de hacerlo.

val = t[0][0] es mi elección inicial, pero parece un poco feo.

[(val,)] = t también funciona, pero se ve feo también. Supongo que depende de cuál es más fácil de leer y de qué quiere parecer menos feo, val o t

Me gustó la idea de Lior de que desempaquetar la lista y la tupla contenga una afirmación.

In [16]: t2 = [('asdf',), ('qwerty',)] 

In [17]: [(val,)] = t2 
--------------------------------------------------------------------------- 
ValueError        Traceback (most recent call last) 
<ipython-input-17-73a5d507863a> in <module>() 
----> 1 [(val,)] = t2 

ValueError: too many values to unpack 
Cuestiones relacionadas