Disimballaggio di una 1-tupla in un elenco di lunghezza 1
-
13-09-2020 - |
Domanda
Supponiamo di avere una tupla in una lista come questa:
>>> t = [("asdf", )]
.
So che l'elenco contiene sempre una 1-TUPLA.Attualmente lo faccio:
>>> dummy, = t
>>> value, = dummy
>>> value
'asdf'
.
C'è un modo più breve e più elegante per farlo?
Soluzione
>>> t = [("asdf", )]
>>> t[0][0]
'asdf'
. Altri suggerimenti
Prova
(value,), = t
.
È meglio di t[0][0]
perché afferma anche che il tuo elenco contiene esattamente 1 tupla con 1 valore in esso.
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 penso che ci sia un modo pulito per farlo.
val = t[0][0]
è la mia scelta iniziale, ma sembra un po 'brutto.
[(val, )] = t
funziona anche ma sembra anche brutto.Immagino che dipenda dal quale è più facile da leggere e ciò che vuoi sembrare meno brutto, val
o t
Mi è piaciuta l'idea di Lior che disimballaggio dell'elenco e della tupla contiene un'assert.
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
. Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow