2012-06-03 17 views
27

के लिए में खोल मैं निम्नलिखित कोड भर में ठोकर खाई:टपल छोरों

for i,a in enumerate(attributes): 
    labels.append(Label(root, text = a, justify = LEFT).grid(sticky = W)) 
    e = Entry(root) 
    e.grid(column=1, row=i) 
    entries.append(e) 
    entries[i].insert(INSERT,"text to insert") 

मुझे समझ नहीं आता 'मैं एक' के बारे में जानकारी के लिए थोड़ा और खोज गूगल 'के लिए' बम में एक दर्द है और जब मैं कोशिश करते हैं और कोड के साथ experement मैं त्रुटि मिलती है:

ValueError: need more than 1 value to unpack

किसी को भी पता है कि वह क्या करता है या यह के साथ क्या करना है कि मैं अधिक जानने के लिए गूगल कर सकते हैं?

उत्तर

49

आप "tuple unpacking" पर Google पर जा सकते हैं। इसका उपयोग पायथन में विभिन्न स्थानों में किया जा सकता है। सबसे आसान असाइनमेंट

>>> x = (1,2) 
>>> a, b = x 
>>> a 
1 
>>> b 
2 

एक लूप में यह समान रूप से काम करता है। यदि पुनरावृत्त का प्रत्येक तत्व एक ट्यूपल है, तो आप दो चर निर्दिष्ट कर सकते हैं और लूप में प्रत्येक तत्व को दो में अनपॅक किया जाएगा।

>>> x = [(1,2), (3,4), (5,6)] 
>>> for item in x: 
...  print "A tuple", item 
A tuple (1, 2) 
A tuple (3, 4) 
A tuple (5, 6) 
>>> for a, b in x: 
...  print "First", a, "then", b 
First 1 then 2 
First 3 then 4 
First 5 then 6 

एन्युमरेट फ़ंक्शन टुपल्स का एक पुनरावृत्त बनाता है, इसलिए इसका उपयोग इस तरह किया जा सकता है।

1

enumerate समारोह एक जनरेटर वस्तु जो, प्रत्येक यात्रा पर, एक टपल तत्व (i), गिने 0 डिफ़ॉल्ट रूप से से शुरू, तत्व में ही (a) के साथ मिलकर के सूचकांक युक्त पैदावार, और for पाश रिटर्न आसानी से आप उन जेनरेट किए गए tuples के दोनों फ़ील्ड तक पहुंचने और उन्हें वैरिएबल नाम असाइन करने की अनुमति देता है।

6

अंकुश मूल रूप से आपको लूप के साथ काम करने के लिए एक अनुक्रमणिका देता है। तो:

for i,a in enumerate([4, 5, 6, 7]): 
    print i, ": ", a 

प्रिंट चाहेंगे:

0: 4 
1: 5 
2: 6 
3: 7 
4

एक उदाहरण के रूप में इस कोड डालें: सूची पर

elements = ['a', 'b', 'c', 'd', 'e'] 
index = 0 

for element in elements: 
    print element, index 
    index += 1 

आप पाश और साथ ही एक सूचकांक चर की दुकान।

elements = ['a', 'b', 'c', 'd', 'e'] 

for index, element in enumerate(elements): 
    print element, index 

index, element अंकन आवश्यकता है क्योंकि enumerate रिटर्न एक टपल ((1, 'a'), (2, 'b'), ...) है कि दो अलग अलग चर में अनपैक किया जाता है: enumerate() एक ही बात है, लेकिन अधिक संक्षेप में करता है।

2
[i for i in enumerate(['a','b','c'])] 

परिणाम:

[(0, 'a'), (1, 'b'), (2, 'c')]