आप जिस कोड के बारे में पूछ रहे हैं उसकी लाइन list comprehension का उपयोग कर सूची बनाने के लिए और इस सूची में एकत्रित डेटा को self.cells
पर असाइन करें। यह
self.cells = []
for i in xrange(region.cellsPerCol):
self.cells.append(Cell(self, i))
स्पष्टीकरण के बराबर है:
सबसे अच्छा व्याख्या करने के लिए कि यह कैसे काम करता है, कुछ सरल उदाहरण मदद से आप समझने के कोड आप में शिक्षाप्रद हो सकता है। यदि आप पाइथन कोड के साथ काम करना जारी रखने जा रहे हैं, तो आप फिर से सूची समझ में आ जाएंगे, और आप इसे स्वयं इस्तेमाल करना चाहेंगे।
ध्यान दें, नीचे दिए गए उदाहरण में, दोनों कोड खंडों बराबर कि में हैं वे मूल्यों की एक list
सूची myList
में संग्रहीत पैदा करते हैं।
उदाहरण के लिए:
myList = []
for i in range(10):
myList.append(i)
भी अधिक जटिल हो सकता है, तो उदाहरण के लिए अगर आप कुछ शर्त यह है कि अगर मान आप सूची में जाना चाहिए निर्धारित था
myList = [i for i in range(10)]
सूची comprehensions के बराबर है सूची समझ के साथ इसे व्यक्त भी कर सकता है।
यह उदाहरण केवल सूची में भी गिने मूल्यों एकत्र:
myList = []
for i in range(10):
if i%2 == 0: # could be written as "if not i%2" more tersely
myList.append(i)
और बराबर सूची समझ:
myList = [i for i in range(10) if i%2 == 0]
दो अंतिम नोट:
- आप "नेस्ट कर सकते हैं "सूची की सूची, लेकिन वे जल्दी समझने के लिए मुश्किल हो जाते हैं :)
- सूची समझ समकक्ष-लूप की तुलना में तेज़ी से चलती है, और इसलिए नियमित रूप से पाइथन प्रोग्रामर के साथ पसंदीदा होता है जो दक्षता के बारे में चिंतित हैं।
ठीक है, एक आखिरी उदाहरण यह दर्शाता है कि आप सूची में उन वस्तुओं को भी लागू कर सकते हैं जिन्हें आप सूची में बदल रहे हैं।यह float() का उपयोग करता मूल्यों फ्लोट करने के लिए स्ट्रिंग की एक सूची कन्वर्ट करने के लिए:
data = ['3', '7.4', '8.2']
new_data = [float(n) for n in data]
देता है:
new_data
[3.0, 7.4, 8.2]
यह एक 'सूची समझ' कहा जाता है –