2010-07-10 5 views

Répondre

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

Essayez

(value,), = t 

Il vaut mieux que t[0][0] car il affirme également que votre liste contient exactement 1 tuple avec 1 valeur en elle.

+0

Je viens de tester cela, et cela ne fonctionne pas. Malheureusement, il ne s'éloigne pas de la liste initiale. –

+0

L'exemple de la question fonctionne. Qu'avez-vous essayé de faire exactement? – Lior

+0

Mes excuses, je l'ai encore essayé et cela fonctionne. Je ne sais pas pourquoi cela n'a pas fonctionné avant; Tout ce que je peux penser, c'est que j'ai quitté le ',' après 'value'. –

0

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

Je ne pense pas qu'il y ait un moyen propre pour aller à ce sujet. Est mon choix initial, mais il semble plutôt moche.

[(val,)] = t fonctionne également mais semble moche aussi. Je suppose que cela dépend de ce qui est plus facile à lire et de ce que vous voulez regarder moins laid, ou t

J'ai aimé l'idée de Lior que le déballage de la liste et du tuple contient une affirmation.

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 
Questions connexes