Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Python

पायथन सूची समझ?

पायथन एक सूची को दूसरे से प्राप्त करने के लिए कॉम्पैक्ट सिंटैक्स प्रदान करता है। इन अभिव्यक्तियों को सूची समझ कहा जाता है। सूची की समझ पायथन में सबसे शक्तिशाली उपकरणों में से एक है। पायथन की सूची समझ कार्यात्मक प्रोग्रामिंग अवधारणाओं के लिए भाषा के समर्थन का एक उदाहरण है।

पायथन सूची की समझ किसी फ़ंक्शन या फ़िल्टर को आइटम की सूची में लागू करने का एक बहुत ही आसान तरीका है। यदि आप सावधान नहीं हैं तो सूची की समझ बहुत उपयोगी हो सकती है, लेकिन अगर आप सावधान नहीं हैं तो बहुत अपठनीय हैं।

सिंटैक्स

सूची समझ का सामान्य सिंटैक्स है -

[expr for element in iterable if condition]

ऊपर −

. के बराबर है
for element in iterable:
   if condition:
      expr

उदाहरण के लिए, मान लें कि आप किसी सूची में प्रत्येक संख्या के वर्ग की गणना करना चाहते हैं। आप अपनी गणना के लिए व्यंजक और लूप ओवर करने के लिए इनपुट अनुक्रम प्रदान करके ऐसा कर सकते हैं।

>>> lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> squares = [x**2 for x in lst]
>>> print(squares)
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

सूची समझ बनाम लूप के लिए

#USING FOR LOOP
evens = []
for i in range(10):
   if i % 2 == 0:
      evens. append(i)
print(evens)

आउटपुट

[0, 2, 4, 6, 8]

उपरोक्त कोड को लिखने का एक बेहतर और तेज़ तरीका सूची समझ के माध्यम से है।

>>> [i for i in range(10) if i % 2 ==0]
[0, 2, 4, 6, 8]

जैसा कि हम देख सकते हैं, सूची समझ का उपयोग करके कोड लिखना बहुत अधिक कुशल है, यह छोटा है और इसमें कम तत्व शामिल हैं।

सूची समझ बनाम लैम्ब्डा फ़ंक्शन

जब तक आप एकल-तर्क फ़ंक्शन लागू नहीं कर रहे हैं, सूची की समझ साधारण मामलों के लिए अंतर्निहित मानचित्र फ़ंक्शन की तुलना में स्पष्ट है। मानचित्र को गणना के लिए एक लैम्ब्डा फ़ंक्शन बनाने की आवश्यकता होती है, जो नेत्रहीन शोर है।

>>> lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> list(map(lambda x: x**2, lst))
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

मानचित्र के विपरीत, सूची की समझ आपको परिणाम से संबंधित आउटपुट को हटाते हुए, इनपुट सूची से आइटम को आसानी से फ़िल्टर करने देती है।

सशर्त अभिव्यक्ति के साथ समझ की सूची बनाएं

उदाहरण के लिए, मान लें कि आप केवल 100 से कम संख्याओं की गणना करना चाहते हैं, जो 2 और 5 दोनों से विभाज्य हैं।

>>> lst = [x for x in range(100) if x % 2 == 0 if x % 5 == 0]
>>> print(lst)
[0, 10, 20, 30, 40, 50, 60, 70, 80, 90]

एक और उदाहरण लें, जहां आप केवल उन संख्याओं के वर्गों की गणना करना चाहते हैं जो 2 से विभाज्य हैं। यहां, मैं लूप के बाद सूची समझ में एक सशर्त अभिव्यक्ति जोड़कर ऐसा करता हूं -

>>> lst=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> even_squares = [x**2 for x in lst if x % 2 == 0]
>>> print(even_squares)
[4, 16, 36, 64, 100]

1 से 100 के बीच सम संख्याओं की गणना करें।

>>> # a list of even numbers between 1 and 100
evens = [i for i in range(1,100) if not i % 2]
>>> print(evens)
[2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98]

बड़ी संख्या में वस्तुओं पर लूप करते समय सूची की समझ लूप की तुलना में कहीं अधिक तेज़ होती है। यदि केवल पठनीयता ही उनका यथासंभव उपयोग करने का एक ठोस कारण नहीं है, तो गति होनी चाहिए।


  1. अजगर में नेस्टेड सूची समझ

    एक नेस्टेड सूची एक सूची के भीतर एक सूची है। पायथन नेस्टेड सूची को इनायत से संभालने के लिए सुविधाएँ प्रदान करता है और नेस्टेड सूचियों में हेरफेर करने के लिए सामान्य कार्यों को लागू करता है। इस लेख में हम देखेंगे कि पाइथन में नेस्टेड सूचियां बनाने और उपयोग करने के लिए सूची समझ का उपयोग कैसे करें। मैट्

  1. पायथन में समझ

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

  1. पायथन सूची समझ और टुकड़ा करना?

    इस खंड में, हम पायथन लिस्ट स्लाइसिंग और लिस्ट कॉम्प्रिहेंशन को समझने जा रहे हैं। लिस्टिंग स्लाइसिंग क्या है? जैसा कि नाम से पता चलता है, स्लाइस का अर्थ है - किसी चीज को छोटे टुकड़ों (स्लाइस) में काटना। लिस्ट स्लाइसिंग एक मूल सूची से सूची के एक हिस्से को निकालने की प्रक्रिया है। लिस्ट स्लाइसिंग में