2012-03-15 38 views
14
k = [u'query_urls', u'"kick"', u'"00"', u'msg=1212', u'id=11'] 

>>> name, view, id, tokens = k 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
ValueError: too many values to unpack 

Bu listeyi açmak için 5 değişkene ihtiyacım var. tokens listesinin geri kalanını daha az alması için bir yol var mı? Bir listeye eklemek için başka bir satır yazmak istemiyorum ....Bir listeyi daha az değişkenle nasıl açarım?

Teşekkürler.


Elbette vb bireysel atamak, bir liste dilim Ama yukarıdaki sözdizimi kullanarak istediğiniz ne yapacağını bilmek istiyorum.

+1

görmezden istiyor musunuz değerlerin geri kalanı? – anijhaw

+0

@anijhaw no i dont. Listenin geri kalanının – User007

cevap

26

Python 3 bunu yapabilirsiniz: (düzenleme: Bu extended iterable unpacking denir)

name, view, id, *tokens = k 

Python 2'de, bunu yapmak zorunda kalacak:

(name, view, id), tokens = k[:3], k[3:] 
+1

numarasına atanması gerekmektedir. Merak etme neden * * jetonları yapamıyorum sadece Py3'te. Teşekkürler. Bu dilim yöntemi gerçekten iyi görünüyor. Şey, bunu tek bir çizgide yapabileceğimizi hiç bilmiyordum. Yine de bana bu 'ValueError'u veriyor: açmak için 2'den fazla değere ihtiyacım var. 2.6.5 – User007

+1

[PEP 3132] 'dir (http://www.python.org/dev/peps/pep-3132/) iniş süreleri, Python 3'te yeniden açılabilir şekilde açılabilir. – agf

+0

Haha. Parantez hile yapar. Teşekkürler ve @agf teşekkürler! – User007

İlgili konular