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
fonte
2013-03-31 14:58:49
Ho appena provato questo, e non funziona. Sfortunatamente non si allontana dalla lista iniziale. –
L'esempio nella domanda funziona. Che cosa hai cercato di fare esattamente? – Lior
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'. –