किसी सूची को समतल करना किसी सूची से किसी आयाम को निकालने की प्रक्रिया को संदर्भित करता है। एक आयाम एक सूची में किसी आइटम का पता लगाने के लिए आवश्यक अतिरिक्त समन्वय को संदर्भित करता है। आप एक पायथन सूची को सूची समझ, लूप के लिए नेस्टेड, या itertools.chain() विधि का उपयोग करके समतल कर सकते हैं।
एक पायथन सूची में कई आयाम हो सकते हैं। इसका मतलब है कि आपके पास सूचियों के भीतर एक सूची है। इन सूचियों, जिन्हें कभी-कभी 'नेस्टेड सूचियाँ' कहा जाता है, को वापस नियमित सूची में बदला जा सकता है।
इसका मतलब है कि आप सूची से सभी मानों को एक सूची में एक सूची में स्थानांतरित कर सकते हैं। सूचियों की सूची को सूची में बदलना "एक सूची को समतल करना" कहलाता है।
पायथन फ़्लैटन सूची
पायथन सूची को समतल करने के तीन तरीके हैं:
- सूची समझ का उपयोग करना।
- लूप के लिए नेस्टेड का उपयोग करना।
- itertools.chain() विधि का उपयोग करना।
इस गाइड में, हम इस बारे में बात करते हैं कि सूची समझ, लूप के लिए और itertools.chain() का उपयोग करके सूची को कैसे समतल किया जाए। तरीका। हम दो उदाहरणों के माध्यम से चलते हैं ताकि आप अपने कार्यक्रमों में सूचियों को समतल करना शुरू कर सकें।
पायथन:सूची समझ का उपयोग करके सूची को समतल करें
एक पायथन सूची समझ मौजूदा सूची की सामग्री के आधार पर एक सूची को परिभाषित करती है। आप समझ में आने वाली शर्तों या परिवर्तनों को निर्दिष्ट करके अपनी नई सूची में जाने वाले प्रत्येक तत्व को कस्टमाइज़ कर सकते हैं।
एक सूची में पुनरावृति करने और एक नई सूची उत्पन्न करने के लिए लूप के लिए उपयोग करने के लिए समझ वाक्यात्मक चीनी है। इसका मतलब है कि वे लूप के लिए समान मौलिक तरीके से काम करते हैं लेकिन विभिन्न सिंटैक्स का उपयोग करते हैं।
यहाँ सूची बोध के लिए वाक्य रचना है:
81% प्रतिभागियों ने कहा कि बूटकैंप में भाग लेने के बाद उन्हें अपनी तकनीकी नौकरी की संभावनाओं के बारे में अधिक आत्मविश्वास महसूस हुआ। आज ही एक बूटकैंप से मिलान करें।
बूटकैंप शुरू करने से लेकर अपनी पहली नौकरी खोजने तक, औसत बूटकैंप ग्रेड ने करियर संक्रमण में छह महीने से भी कम समय बिताया।
numbers = [1, 2, 3] new_numbers = [number * 2 for number in numbers]
यह समझ हमारी "संख्या" सूची में प्रत्येक संख्या को 2 से गुणा करती है।
फ्लैटन लिस्ट:लिस्ट कॉम्प्रिहेंशन उदाहरण
हमारे पास सूचियों की एक सूची है जिसमें एक रेस्तरां में उपलब्ध विभिन्न सैंडविच फिलिंग शामिल हैं। वर्तमान में, हमारी सूचियों की सूची इस तरह दिखती है:
foods = [ ["Tomato and Cucumber", "Hummus, Beetroot, and Lettuce"], ["Cheese", "Egg"], ["Ham", "Bacon", "Chicken Club", "Tuna"] ]
पहली सूची में शाकाहारी सैंडविच भराई है; दूसरी सूची में शाकाहारी सैंडविच भराई है; तीसरी सूची में सभी सैंडविच फिलिंग शामिल हैं जिनमें मांस होता है।
हम इस सूची को खाद्य पदार्थों की एक सूची में बदलना चाहते हैं। दो के बजाय एक आयाम वाली सूची के साथ काम करना आसान है। इस सूची में एक से अधिक आयाम होने की आवश्यकता नहीं है। हमारी सूची से दूसरे आयाम को हटाने के लिए, हम सूची समझ का उपयोग कर सकते हैं:
new_foods = [food for sublist in foods for food in sublist] print(new_foods)
यह सूची समझ "खाद्य पदार्थ" पायथन चर में प्रत्येक सूची पर पुनरावृत्त होती है। प्रत्येक मान को फिर एक मुख्य सूची में जोड़ा जाता है। एक बार हमारी सूची तैयार हो जाने के बाद, हम इसे कंसोल पर प्रिंट कर लेते हैं।
आइए अपना कोड देखें और देखें कि क्या होता है:
['Tomato and Cucumber', 'Hummus, Beetroot, and Lettuce', 'Cheese', 'Egg', 'Ham', 'Bacon', 'Chicken Club', 'Tuna']
सूचियों की हमारी सूची को सफलतापूर्वक एक सपाट सूची में बदल दिया गया है। सभी सामग्री अब तीन के बजाय एक सूची में दिखाई देती हैं।
पायथन:नेस्टेड फॉर लूप का उपयोग करके सूची को समतल करें
हम लूप के लिए नेस्टेड पायथन का उपयोग करके भी यही परिणाम प्राप्त करते हैं। "लूप के लिए नेस्टेड" कहने का एक और तरीका है "लूप के लिए लूप के भीतर।" हमारी सूची समझ लूप के लिए निम्नलिखित का प्रतिनिधित्व करने का एक और तरीका है:
new_foods = [] for sublist in foods: for food in sublist: new_foods.append(food) print(new_foods)
सूचियों की मूल सूची में प्रत्येक सूची में प्रत्येक सूची आइटम पर पुनरावृति करने के लिए हमारा कोड लूप के लिए दो का उपयोग करता है। चलिए अपना कोड चलाते हैं:
['Tomato and Cucumber', 'Hummus, Beetroot, and Lettuce', 'Cheese', 'Egg', 'Ham', 'Bacon', 'Chicken Club', 'Tuna']
हमारा कार्यक्रम हमारी सूची समझ के समान परिणाम देता है। ज्यादातर मामलों में, लूप के लिए सूची की समझ एक बेहतर समाधान है। सूची की समझ छोटी होती है और, इस मामले में, लूप के लिए नेस्टेड की तुलना में पढ़ने में आसान होती है।
पायथन:Itertools का उपयोग करके सूची को समतल करें
Itertools पायथन मानक पुस्तकालय में एक मॉड्यूल है। मॉड्यूल कई तरीके प्रदान करता है, जिससे चलने योग्य वस्तुओं और जनरेटर के साथ काम करना आसान हो जाता है।
हमारे उद्देश्यों के लिए, हम केवल श्रृंखला () . का संदर्भ देते हैं तरीका। यह विधि सूचियों की सूची को स्वीकार करती है और एक चपटी सूची लौटाती है।
पायथन आयात विवरण का उपयोग करके हमारे कोड में itertools मॉड्यूल को आयात करके प्रारंभ करें:
import itertools
इसके बाद, सूचियों की सूची को परिभाषित करें और श्रृंखला () . का उपयोग करें सूची को समतल करने की विधि:
foods = [ ["Tomato and Cucumber", "Hummus, Beetroot, and Lettuce"], ["Cheese", "Egg"], ["Ham", "Bacon", "Chicken Club", "Tuna"] ] new_foods = itertools.chain(*foods)
हमारे कोड में, हम अपनी सूची को अनपैक करने के लिए * प्रतीक का उपयोग करते हैं। यह हमारी सूची को फ़ंक्शन तर्कों में परिवर्तित करता है जिसे श्रृंखला () . द्वारा पार्स किया जा सकता है विधि।
श्रृंखला () विधि एक itertools.chain वस्तु देता है। अपनी चपटी सूची देखने के लिए हमें इस वस्तु को सूची में बदलना होगा। हम इसे सूची () . का उपयोग करके करते हैं विधि:
print(list(new_foods))
आइए अपना कोड निष्पादित करें:
['Tomato and Cucumber', 'Hummus, Beetroot, and Lettuce', 'Cheese', 'Egg', 'Ham', 'Bacon', 'Chicken Club', 'Tuna']
हमारे कोड ने हमारी सूची को समतल कर दिया है।
जबकि itertools एक सूची को समतल करने का एक प्रभावी तरीका है, यह पिछले दो दृष्टिकोणों की तुलना में अधिक उन्नत है जिनकी हमने चर्चा की है।
ऐसा इसलिए है क्योंकि आपको अपने कोड में itertools आयात करना होगा जो एक नई निर्भरता का परिचय देता है। और क्या है, श्रृंखला () विधि में अनपैकिंग शामिल है जिसे समझना मुश्किल हो सकता है।
निष्कर्ष
आप एक पायथन सूची को सूची समझ, लूप के लिए नेस्टेड और itertools.chain() विधि का उपयोग करके समतल कर सकते हैं। सूची समझ सबसे "पायथनिक" विधि है और इसलिए ज्यादातर मामलों में इसका समर्थन किया जाता है।
जबकि लूप के लिए नेस्टेड प्रभावी होते हैं, वे सूची बोध की तुलना में कोड की अधिक पंक्तियों का उपभोग करते हैं। itertools.chain() विधि समान रूप से प्रभावी है लेकिन शुरुआती लोगों के लिए इसे समझना मुश्किल हो सकता है।
आमतौर पर एक नई लाइब्रेरी - itertools - को आयात करने की आवश्यकता नहीं होती है, जब पायथन आपको एक सूची को समतल करने के लिए आवश्यक सभी उपकरण देता है।
क्या आप पायथन के बारे में अधिक जानना चाहते हैं? हमारा पूरा देखें कि पायथन गाइड कैसे सीखें। आपको विशेषज्ञ शिक्षण युक्तियाँ और शीर्ष पाठ्यक्रमों और पुस्तकों की एक सूची मिलेगी जिनसे आप सीख सकते हैं।