Python Academy · पाठ

जनरेटर एक्सप्रेशन

मेमोरी का कुशल उपयोग करने के लिए जनरेटर एक्सप्रेशन से आलसी अनुक्रम बनाएँ।

पाठ 3, कुल 4 में से14 चरण

जनरेटर एक्सप्रेशन, CoddyKit पर Python Academy का एक निःशुल्क पाठ है। यह 4 में से 3वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह Python Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Python Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

परिचय

जनरेटर अभिव्यक्तियाँ लेज़ी कॉम्प्रिहेंशन होती हैं — वे मेमोरी में सूची बनाए बिना एक बार में एक मान उत्पन्न करती हैं।

जनरेटर अभिव्यक्ति का वाक्यविन्यास

(expression for item in iterable) में कोष्ठक उपयोग होते हैं। यह जनरेटर ऑब्जेक्ट लौटाता है, NOT सूची।
gen = (x**2 for x in range(5))
print(gen)  # generator object
print(next(gen))  # 0
print(next(gen))  # 1

मेमोरी की दक्षता

जनरेटर एक समय में केवल एक मान रखता है। sum(x**2 for x in range(10**7)), सूची की तुलना में O(1) मेमोरी का उपयोग करता है।
total = sum(x**2 for x in range(100))
print(total)

जनरेटर का उपभोग करना

जनरेटर का उपभोग केवल एक बार किया जा सकता है। समाप्त हो जाने के बाद StopIteration उत्पन्न होता है और कुछ भी शेष नहीं रहता।
gen = (x for x in range(3))
for val in gen:
    print(val)
# gen is now exhausted

फ़ंक्शन तर्क के रूप में जनरेटर

यदि जनरेटर एकमात्र तर्क है, तो अतिरिक्त कोष्ठक हटाए जा सकते हैं: sum(x**2 for x in range(10))।
print(sum(x**2 for x in range(10)))
print(max(len(w) for w in ['cat', 'elephant', 'ant']))

जनरेटरों को जोड़ना

जनरेटरों को लेज़ी तरीके से जोड़ा जा सकता है: evens = (x for x in range(100) if x%2==0); big = (x for x in evens if x>50)।
evens = (x for x in range(100) if x % 2 == 0)
big_evens = (x for x in evens if x > 50)
print(list(big_evens))

सूची/ट्यूपल में बदलना

list(gen) या tuple(gen) सभी मानों को मेमोरी में रखता है। जब आपको रैंडम एक्सेस या कई बार दोहराव चाहिए, तब ऐसा कीजिए।
gen = (x**2 for x in range(5))
print(list(gen))

जनरेटर अभिव्यक्ति बनाम सूची कॉम्प्रिहेंशन

जनरेटर का उपयोग तब कीजिए जब आप केवल एक बार इटरेट करेंगे या डेटा-समुच्चय बड़ा हो। सूची का उपयोग तब कीजिए जब आपको len(), इंडेक्सिंग या कई बार इटरेट करना हो।
import sys
lst = [x**2 for x in range(1000)]
gen = (x**2 for x in range(1000))
print(sys.getsizeof(lst), sys.getsizeof(gen))

अनंत जनरेटर

itertools.count(0) एक अनंत काउंटर है। केवल आवश्यक मान लेने के लिए इसे islice के साथ जोड़िए।
import itertools
first10 = list(itertools.islice(itertools.count(0), 10))
print(first10)

जनरेटरों के साथ any() और all()

any(x>5 for x in lst) शॉर्ट-सर्किट करता है — पहले True पर रुक जाता है। all() पहले False पर रुकता है। यह बहुत दक्ष है।
nums = [1, 3, 7, 2]
print(any(x > 5 for x in nums))
print(all(x > 0 for x in nums))

पाइपलाइन

रूपांतरणों को लेज़ी तरीके से जोड़िए: data → filter → transform → aggregate। प्रत्येक चरण एक जनरेटर है; आवश्यकता होने तक कुछ भी नहीं चलता।
data = range(1000)
filtered = (x for x in data if x % 7 == 0)
transformed = (x * 2 for x in filtered)
print(sum(transformed))

त्वरित जाँच

सूची कॉम्प्रिहेंशन की तुलना में जनरेटर अभिव्यक्ति का मुख्य मेमोरी लाभ क्या है?

पुनरावलोकन

जनरेटर अभिव्यक्तियाँ: (expr for x in it)। लेज़ी मूल्यांकन — O(1) मेमोरी। इनका उपभोग केवल एक बार किया जा सकता है। sum/any/all/max के साथ उपयोग कीजिए। कई बार इटरेट करना हो तो सूची में बदल दीजिए।

आगे बढ़िए

बहुत अच्छा! अपने कौशल को और मजबूत करने के लिए अगले पाठ पर जाइए।
शुरुआत निःशुल्क

एआई शिक्षक के साथ Python सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
76
पाठ
320

अक्सर पूछे जाने वाले प्रश्न

क्या “जनरेटर एक्सप्रेशन” पाठ निःशुल्क है?

हाँ—“जनरेटर एक्सप्रेशन” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और Python Academy पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। Python Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“जनरेटर एक्सप्रेशन” में मैं क्या सीखूँगा?

मेमोरी का कुशल उपयोग करने के लिए जनरेटर एक्सप्रेशन से आलसी अनुक्रम बनाएँ। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Python Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या Python Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Python Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 3वाँ पाठ है।

“जनरेटर एक्सप्रेशन” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस Python Academy पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर Python Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. सूची कॉम्प्रिहेंशन
  2. सेट और डिक्शनरी कॉम्प्रिहेंशन
  3. जनरेटर एक्सप्रेशन
  4. yield कीवर्ड
← Python Academy पर वापस जाएँ