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

Python List Comprehension क्या है?


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

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]

सूची समझ बनाम फॉर लूप

# फॉर लूप का उपयोग करके
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 के बीच सम संख्याओं की गणना करें।

>>> # 1 और 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. - Python में नेस्टेड लिस्ट कॉम्प्रिहेंशन

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

  1. - पायथन में कॉम्प्रिहेंशन्स

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

  1. - पायथन लिस्ट कॉम्प्रिहेंशन और स्लाइसिंग

    इस लेख में हम पायथन में लिस्ट स्लाइसिंग और लिस्ट कॉम्प्रिहेंशन को समझेंगे। ये दोनों तकनीकें लिस्ट के साथ काम करने को अधिक संक्षिप्त और पठनीय बनाती हैं। लिस्ट स्लाइसिंग क्या है? स्लाइसिंग का अर्थ है किसी लिस्ट के एक भाग (सबसेट) को निकालना। आप निर्दिष्ट कर सकते हैं कि कहां से शुरू करें, कहां रुकें और