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
Właśnie to przetestowałem i to nie działa. Niestety nie odrywa się od początkowej listy. –
Ten przykład w pytaniu działa. Co dokładnie próbowałeś zrobić? – Lior
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'. –