उन्नत पायथन विकास पाठ्यक्रम
अध्याय
>
स्तर
उन्नत सूचियाँ
सूची समेकन
इस अध्याय में हम पायथन में सूचियों का उपयोग करने के नए तरीकों का अन्वेषण करने जा रहे हैं, जिसमें अनुकूलन, विभाजन और यहां तक कि तालिकाओं के समान दिखने वाली बड़ी बहुआयामी सूचियाँ बनाने की प्रक्रिया शामिल है।
इस स्तर के लिए हम लिस्ट कॉम्प्रिहेंशन्स के साथ काम करेंगे, जो ऐसी सूचियाँ हैं जिन्हें अन्य सूचियों से केवल चयनित घटकों को चुनकर बनाया जा सकता है। यह एक बहुत ही सीधी एकल पंक्ति के कोड में किया जाता है, बिना मैन्युअली एक लिस्ट दर्ज किए या किसी जटिल स्वचालन के साथ आने की आवश्यकता के।

उद्देश्य
पेंट्री में मौजूद सभी मूल सब्जियों को इकट्ठा करें और उन्हें छाँटें ताकि आप उन्हें उचित स्थान पर रख सकें, और इसके लिए सूची समेकन (list comprehensions) का उपयोग करें।
पेंट्री में कई बोरे हैं जिनमें मूल सब्जियाँ भरी हुई हैं जिन्हें छांटना आवश्यक है, जिनमें शामिल हैं: potatoes, onions और garlic, और संभवतः इनमें खराब हो चुकी सब्जियाँ भी हो सकती हैं। अच्छी सब्जियाँ निकालें और उन्हें उन क्रेट्स में रखें जहाँ उन्हें रखना है।
इस कार्य को पूरा करने के लिए आपको यह पहचानना होगा कि प्रत्येक बोरे के अंदर कौन-कौन से आइटम हैं। हर एक बोरे की जानकारी रखने वाले तीन (3) सूची स्थिरांक हैं, जिनके नाम हैं: left_sack, middle_sack, right_sack। ये सूची स्थिरांक उनके नामों द्वारा निर्दिष्ट स्थानों पर मौजूद बोरे से संबंधित हैं।
प्रत्येक बोरे के सामने स्थित हल्की X मार्क वाली जगह पर जाएं और speak() फ़ंक्शन का उपयोग करके प्रत्येक बोरे की सामग्री की पहचान करें, उदाहरण के लिए: player.speak(left_sack)। एक बार जब आप प्रत्येक बोरे के अंदर की सामग्री की पहचान कर लें, तो उन आइटम्स की पहचान करें जिन्हें हटाना आवश्यक है, जैसे कि जिनके नाम में "Bad", "Spoiled" या "Rotten" शामिल हो।
आपको नई सूचियाँ बनानी हैं जिनमें केवल वे आइटम शामिल हों जो खाने योग्य हैं। इसे मैन्युअली करना संभव है, लेकिन इसमें काफी समय लग सकता है और यह उलझन भरा हो सकता है। इसे और प्रभावी ढंग से पूरा करने के लिए आप एक सूची से दूसरी सूची बना सकते हैं, जिसे हम List Comprehension कहते हैं।
तीन (3) सूची स्थिरांकों: left_sack, middle_sack, right_sack से, तीन नई सूचियाँ बनाएं जिनके नाम होंगे: potatoes, onions और garlic जो बोरे में मौजूद अवांछित आइटम्स को शामिल नहीं करें। List Comprehensions आपको बिना बहुत सारा कोड लिखे नई सूचियाँ बनाने का अवसर देती हैं, उदाहरण के लिए:
# Original list sack = ["Potatoes", "Sweet Potatoes", "Spoiled Potatoes" ] # List Comprehension potatoes = [x for x in sack if not "Spoiled" in x] # This will create a list named potatoes with: # ["Potatoes", "Sweet Potatoes"]
उपरोक्त उदाहरण में, sack नामक सूची से केवल ["Potatoes", "Sweet Potatoes"] को शामिल करके potatoes नाम की नई सूची बनाई गई है और "Spoiled Potatoes" को बाहर रखा गया है। यह एक स्व-समाहित for लूप बनाकर किया गया है, जहाँ x को सूची के माध्यम से जाने के लिए एक सूचकांक के रूप में उपयोग किया गया है और for / in कथनों का उपयोग करके अवांछित तत्व को बाहर रखा गया है, अर्थात् किसी भी स्ट्रिंग में "Spoiled" शब्द शामिल होने पर।
समीक्षा के लिए, speak() फ़ंक्शन का उपयोग करके यह पता लगाएं कि क्या सूची स्थिरांकों में "Bad", "Spoiled" या "Rotten" शब्द हैं, और फिर List Comprehensions का उपयोग करके सूचियाँ potatoes, onions और garlic बनाएं, जिनमें आपने प्रत्येक सूची में पाए गए अवांछित तत्व हटाए हों।
एक बार ये सूचियाँ बन जाने के बाद, तीन (3) सोने के X मार्क वाले क्रेट्स के सामने जाएं, जिन पर सब्जियों के संकेत लगे हैं, और place() फ़ंक्शन का उपयोग करके सूची को संबंधित क्रेट्स में रख दें ताकि स्तर पूरा हो सके। स्थान संकेतों द्वारा निर्दिष्ट हैं, अर्थात् onions को बाएँ क्रेट में, potatoes को मध्य क्रेट में और garlic को दाएँ क्रेट में रखना है।