2010-07-10 9 views

Odpowiedz

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

Spróbuj

(value,), = t 

To lepsze niż t[0][0] ponieważ również twierdzi, że lista zawiera dokładnie 1 z 1 krotka wartości w nim.

+0

Właśnie to przetestowałem i to nie działa. Niestety nie odrywa się od początkowej listy. –

+0

Ten przykład w pytaniu działa. Co dokładnie próbowałeś zrobić? – Lior

+0

Moje przeprosiny, spróbowałem jeszcze raz i to działa. Nie jestem pewien, dlaczego wcześniej nie działało; wszystko, co mogę myśleć, to to, że opuściłem ',' out after 'value'. –

0

Spróbuj [(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' 

nie sądzę jest czysty sposób się do tego zabrać.

val = t[0][0] to mój pierwszy wybór, ale wygląda trochę brzydko.

[(val,)] = t również działa, ale wygląda też brzydko. Myślę, że to zależy od tego, który jest łatwiejszy do odczytania i co chcesz wyglądać mniej brzydko, val lub t

Podobał mi się pomysł Liora, że ​​rozpakowanie listy i krotki zawiera twierdzenie.

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 
Powiązane problemy