2010-07-10 2 views

risposta

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

Prova

(value,), = t 

E 'meglio di t[0][0] perché afferma, inoltre, che l'elenco contiene esattamente 1 tupla con 1 valore in esso.

+0

Ho appena provato questo, e non funziona. Sfortunatamente non si allontana dalla lista iniziale. –

+0

L'esempio nella domanda funziona. Che cosa hai cercato di fare esattamente? – Lior

+0

Le mie scuse, ho provato di nuovo e funziona. Non sono sicuro del motivo per cui non ha funzionato prima; tutto quello che posso pensare è che ho lasciato il ',' out dopo 'value'. –

0

Prova [(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' 

non credo che ci sia un modo pulito per andare su di esso.

val = t[0][0] è la mia scelta iniziale, ma sembra un po 'brutto.

[(val,)] = t funziona ma sembra anche brutto. Immagino dipenda da cosa è più facile da leggere e da cosa vuoi sembrare meno brutto, val o t

Mi è piaciuta l'idea di Lior che disimballando la lista e la tupla contenga un'asserzione.

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