पायथन में जेनरेटर क्या हैं और उनका उपयोग कैसे करें?



जानें कि पायथन में क्या फायदे हैं। विभिन्न उपयोग मामलों के साथ-साथ उन्हें बनाना और उनका उपयोग करना भी सीखें।

पुनरावृत्तियों या उन वस्तुओं को उत्पन्न करना जो उनके ऊपर कदम रखने की अनुमति देते हैं, उन्हें एक बोझिल कार्य माना जाता है। लेकिन में इस दर्दनाक कार्य का कार्यान्वयन वास्तव में सहज हो जाता है। तो चलिए आगे बढ़ते हैं और Python में जेनरेटर पर एक करीब से नज़र डालते हैं।

इस लेख में शामिल सभी विषयों की एक सूची इस प्रकार है:





तो चलिए शुरू करते हैं। :)

पायथन में जेनरेटर क्या हैं?

जेनरेटर मूल रूप से फ़ंक्शंस हैं जो ट्रैवर्सेबल ऑब्जेक्ट्स या आइटम को लौटाते हैं। ये फ़ंक्शन एक ही बार में सभी वस्तुओं का उत्पादन नहीं करते हैं, बल्कि उन्हें एक बार में और आवश्यक होने पर ही उत्पादित करते हैं। जब भी आइटम के एक सेट पर पुनरावृति शामिल है, एक जनरेटर फ़ंक्शन चलाया जाता है। जेनरेटर के कई फायदे भी हैं।



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

  • पायथन में जेनरेटर के बिना, पुनरावृत्तियों का उत्पादन करना बेहद कठिन और लंबा है।

  • जनरेटर को लागू करना आसान है क्योंकि वे स्वचालित रूप से __iter __ (), __next __ () और StopIteration को लागू करते हैं जो अन्यथा स्पष्ट रूप से निर्दिष्ट करने की आवश्यकता है।



  • मेमोरी को सहेजा जाता है क्योंकि सामान्य के विपरीत, आवश्यक होने पर आइटम का उत्पादन किया जाता है । जब आप पुनरावृत्तियों की एक बड़ी संख्या बनाने की आवश्यकता होती है तो यह तथ्य बहुत महत्वपूर्ण हो जाता है। इसे जनरेटर का सबसे बड़ा लाभ भी माना जाता है।

  • अनंत वस्तुओं का उत्पादन करने के लिए इस्तेमाल किया जा सकता है।

  • उनका उपयोग कई कार्यों को पाइपलाइन करने के लिए भी किया जा सकता है

जेनरेटर के कार्य बनाम सामान्य कार्य:

Python में जनरेटर उसी तरह बनाए जाते हैं जैसे आप कैसे बनाते हैं 'डीईएफ़' कीवर्ड का उपयोग करना। लेकिन, जेनरेटर फ़ंक्शंस रिटर्न के बजाय उपज कीवर्ड का उपयोग करते हैं। यह दुभाषिया को सूचित करने के लिए किया जाता है कि यह एक पुनरावृत्ति है। इतना ही नहीं, जेनरेटर फ़ंक्शंस तब चलाए जाते हैं जब अगला () फ़ंक्शन कहा जाता है और सामान्य कार्यों के मामले में उनके नाम से नहीं। इसे बेहतर समझने के लिए निम्नलिखित उदाहरण पर विचार करें:

उदाहरण:

def func (a): उपज a = [1,2,3] b = func (a) अगला (b)

OUTPUT: [१, २, ३]

जैसा कि आप देख सकते हैं, उपरोक्त आउटपुट में, func () उपज कीवर्ड का उपयोग कर रहा है और इसके निष्पादन के लिए अगला फ़ंक्शन। लेकिन, सामान्य कार्य के लिए आपको निम्नलिखित कोड की आवश्यकता होगी:

उदाहरण:

def func (a): a = [1,2,3] func (a) लौटाएं

OUTPUT: [१, २, ३]

यदि आप उपर्युक्त उदाहरण को देखते हैं, तो आप सोच रहे होंगे कि जेनरेटर फ़ंक्शन का उपयोग क्यों किया जाता है जब सामान्य फ़ंक्शन भी उसी आउटपुट को वापस कर रहा है। तो चलिए आगे बढ़ते हैं और देखते हैं कि पायथन में जेनरेटर का उपयोग कैसे किया जाता है।

जनरेटर कार्यों का उपयोग करना:

जैसा कि पहले उल्लेख किया गया है, पायथन में जेनरेटर एक समय में पुनरावृत्तियों का उत्पादन करते हैं। निम्नलिखित उदाहरण पर एक नज़र डालें:

उदाहरण:

जावा में दुभाषिया क्या है
myfunc (a) को परिभाषित करें: a = = 3: a = a + 1 b = myfunc (a) प्रिंट (b) अगला (b) प्राप्त करें

जब आप निम्नलिखित फ़ंक्शन को निष्पादित करते हैं, तो आप निम्न आउटपुट देखेंगे:

OUTPUT:

यहाँ, एक पुनरावृत्ति योग्य वस्तु को स्थिति को संतुष्ट करते हुए लौटा दिया गया है। निष्पादन के बाद, नियंत्रण कॉलर को स्थानांतरित कर दिया जाता है। यदि अधिक आइटम की आवश्यकता होती है, तो उसी फ़ंक्शन को अगले () फ़ंक्शन को कॉल करके फिर से निष्पादित करने की आवश्यकता होती है।

अगला (बी)

OUTPUT:

केवल उनके रिटर्न प्रकार में भिन्न होने वाले कार्य अतिभारित नहीं किए जा सकते हैं

आगे के निष्पादन पर, फ़ंक्शन 6,7 लौटाएगा, आदि पायथन में जनरेटर फ़ंक्शन __iter __ () और __next __ () विधियों को स्वचालित रूप से लागू करते हैं। इसलिए, आप केवल अगली () विधि का उपयोग करके वस्तुओं पर पुनरावृति कर सकते हैं। जब आइटम पीढ़ी को समाप्त करना चाहिए, तो जेनरेटर फ़ंक्शंस लागू होते हैं रोक आंतरिक रूप से फोन करने वाले की चिंता किए बिना। यहाँ इसका एक और उदाहरण दिया गया है:

उदाहरण:

a = 2 ने myfunc (a) को हराया: जबकि a = = 0: a - = 1 b = myfunc (a) प्रिंट (b) अगला (b)

OUTPUT:

पायथन-एडुर्का में स्टॉपइंटरनेशन-जेनरेटरउपरोक्त छवि हमारे कार्यक्रम के निष्पादन के लिए आवश्यक संख्या दिखाती है। यदि आप अगले फ़ंक्शन को फिर से कॉल करने का प्रयास करते हैं, तो यह एक संदेश दिखा रहा है रोक लागू किया गया है। यदि आप सामान्य कार्यों के साथ ऐसा करने का प्रयास करते हैं, तो लौटाए गए मान परिवर्तित नहीं होंगे या पुनरावृत्त नहीं होंगे। नीचे दिए गए उदाहरण पर एक नज़र डालें:

उदाहरण:

def z (): n = 1 उपज n n = n + 3 उपज n p = z () अगला (p)

OUTPUT:

छोरों के साथ जनरेटर:

यदि आप एक ही फ़ंक्शन को एक ही बार में निष्पादित करना चाहते हैं, तो आप 'लूप' के लिए उपयोग कर सकते हैं। यह लूप ऑब्जेक्ट्स पर पुनरावृति करने में मदद करता है और सभी कार्यान्वयन के बाद यह StopIteration निष्पादित करता है।

उदाहरण:

def z (): n = 1 उपज n n = n + 3 उपज n के लिए x in z (): प्रिंट (x)

OUTPUT:

एक

आप पुनरावृत्त वस्तुओं को उत्पन्न करने के लिए भाव भी निर्दिष्ट कर सकते हैं।

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

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

नीचे दिए गए उदाहरण पर एक नज़र डालें:

उदाहरण:

a = श्रेणी (6) प्रिंट ('सूची समझ', अंत = ':') b = [x + 2 में x के लिए] प्रिंट (b) प्रिंट ('जनरेटर अभिव्यक्ति', अंत = ': n') c = (x + 2 में x के लिए a) प्रिंट (c) में y के लिए c: प्रिंट (y)

OUTPUT:

सूची समझ: [२, ३, ४, ५, ६,:]

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





जैसा कि आप देख सकते हैं, उपरोक्त आउटपुट में, पहली अभिव्यक्ति एक सूची बोध है जो कि [] कोष्ठक में निर्दिष्ट है। सूची की समझ एक ही बार में वस्तुओं की पूरी सूची तैयार करती है। अगला एक जनरेटर अभिव्यक्ति है जो एक ही आइटम लौटाता है लेकिन एक समय में एक। यह () कोष्ठक का उपयोग करके निर्दिष्ट किया गया है।


जनककार्यों का उपयोग अन्य कार्यों में भी किया जा सकता है।उदाहरण के लिए:

उदाहरण:

a = श्रेणी (6) प्रिंट ('जेनरेटर अभिव्यक्ति', अंत = ': n') c = (x + 2 में x के लिए) प्रिंट (c) प्रिंट (न्यूनतम (c))

OUTPUT:

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

उपरोक्त अभिव्यक्ति के मान पर लागू होने पर उपरोक्त कार्यक्रम न्यूनतम मान को प्रिंट करता है।

बक्सों का इस्तेमाल करें:

आइए हम जेनरेटर का उपयोग करें सेवा मेरे:

जब जावा में इस का उपयोग करने के लिए
  • फाइबोनैचि श्रृंखला उत्पन्न करें
  • संख्या उत्पन्न करना

फाइबोनैचि श्रृंखला बनाना:

फाइबोनैचि श्रृंखला, जैसा कि हम सभी जानते हैं कि संख्याओं की एक श्रृंखला है जिसमें प्रत्येक संख्या दो संख्याओं से पहले होने का योग है। पहले दो संख्याएँ 0 हैं और 1. यहाँ एक जनरेटर प्रोग्राम है जो फाइबोनैचि श्रृंखला उत्पन्न करता है:

उदाहरण:

def fibo (): फर्स्ट, सेकंड = 0,1 जबकि True: यील्ड इन फर्स्ट, सेकंड = सेकेंड, फर्स्ट + सेकंड इन x फॉर फाइबो (): इफ x> 50: ब्रेक प्रिंट (x, एंड = ’’)

OUTPUT:

0 1 1 2 3 5 8 13 21 34

उपरोक्त आउटपुट 50 से कम मूल्यों के साथ फिबोनाची श्रृंखला दिखाता है। आइए अब एक नज़र डालें कि संख्याओं की सूची कैसे बनाई जाए।

जनरेटिंग नंबर:

यदि आप निर्दिष्ट सूची संख्या उत्पन्न करना चाहते हैं, तो आप इसे जनरेटर कार्यों का उपयोग करके कर सकते हैं। निम्नलिखित उदाहरण पर एक नज़र डालें:

उदाहरण:

a = श्रेणी (10) b = (x में x के लिए x) प्रिंट (b) में y के लिए b: प्रिंट (y)

OUTPUT:


एक







उदाहरण:

a = श्रेणी (2,10,2) b = (x के लिए x) प्रिंट में (b) में y के लिए b: प्रिंट (y)

OUTPUT:





उपरोक्त कार्यक्रम 2 से 10 तक की संख्या में वापस आ गया है। यह हमें इस लेख के अंत में पायथन में जनरेटरों पर लाता है। मुझे उम्मीद है कि आप सभी विषयों को समझ गए होंगे।

सुनिश्चित करें कि आप जितना संभव हो उतना अभ्यास करें और अपने अनुभव को वापस लाएं।

क्या आप हमसे कोई प्रश्न पूछना चाहते हैं? कृपया इसे 'पायथन में जेनरेटर' ब्लॉग के टिप्पणी अनुभाग में उल्लेख करें और हम जल्द से जल्द आपको वापस कर देंगे।

अपने विभिन्न अनुप्रयोगों के साथ अजगर पर गहराई से ज्ञान प्राप्त करने के लिए, आप लाइव के लिए नामांकन कर सकते हैं 24/7 समर्थन और आजीवन पहुंच के साथ।