24 NİSAN 2014, PERŞEMBE
Neden bir sözlük bir demet olarak çözdükten olabilir?
Bugün, bir özel durum yoktu ve bir ifade gördüm. Herkes arkasındaki teori açıklayabilir mi?
>>> x, y = {'a': 2, 'b': 5}
>>> x
'a'
>>> y
'b'
CEVAP
24 NİSAN 2014, PERŞEMBE
Python iterable her paketten olabilir1:
>>> x,y,z = [1, 2, 3] # A list
>>> x,y,z
(1, 2, 3)
>>> x,y,z = 1, 2, 3 # A tuple
>>> x,y,z
(1, 2, 3)
>>> x,y,z = {1:'a', 2:'b', 3:'c'} # A dictionary
>>> x,y,z
(1, 2, 3)
>>> x,y,z = (a for a in (1, 2, 3)) # A generator
>>> x,y,z
(1, 2, 3)
>>>
Ayrıca, bir sözlük üzerinden yineleme çünkü sadece kendi anahtarları verir:
>>> for i in {1:'a', 2:'b', 3:'c'}:
... print i
...
1
2
3
>>>
bir sözlük üzerinde dolaşır) ambalajın aynı şekilde sadece kendi anahtarları ayıklar.
1Aslında, her iterable çözdükten olabilir demeliyimsüreceiçine paketten adları iterable uzunluğuna eşittir:
>>> a,b,c = [1, 2, 3] # Number of names == len(iterable)
>>>
>>> a,b = [1, 2, 3] # Too few names
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: too many values to unpack (expected 2)
>>>
>>> a,b,c,d = [1, 2, 3] # Too many names
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: need more than 3 values to unpack
>>>
Ama bu Python 2 için tek durumdur.x. Python 3'te.x, sadece isimleri (sonlu) herhangi büyüklükteki bir iterable açmak için izin verir extended iterable unpacking,:
>>> # Python 3.x interpreter
...
>>> a, *b, c = [1, 2, 3, 4]
>>> a, b, c
(1, [2, 3], 4)
>>>
>>> a, *b = [1, 2, 3, 4]
>>> a, b
(1, [2, 3, 4])
>>>
>>> *a, b, c = [1, 2, 3, 4]
>>> a, b, c
([1, 2], 3, 4)
>>>
Bunu Paylaş:
Neden't Sözlük<bool? bir, için...
Neden't sınırlı bir joker, genel ...
Neden &; ad std quot;" kötü olara...
performSelector onun seçici bilinmiyor...
Neden karma tablo üzerinde Sözlük terc...