"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > पायथन में इटरेटर और जेनरेटर के साथ कैसे काम करें

पायथन में इटरेटर और जेनरेटर के साथ कैसे काम करें

2024-08-22 को प्रकाशित
ब्राउज़ करें:582

How to Work with Iterators and Generators in Python

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

1. इटरेटर क्या है?

परिभाषा: एक इटरेटर पायथन में एक ऑब्जेक्ट है जो आपको एक समय में एक संग्रह के सभी तत्वों (जैसे एक सूची या टुपल) के माध्यम से जाने की अनुमति देता है। यह इटरेटर प्रोटोकॉल का पालन करता है, जिसमें दो तरीकों को लागू करना शामिल है: __iter__() और __next__()।

इटरेटर्स कैसे काम करते हैं:

  • __iter__(): यह विधि इटरेटर ऑब्जेक्ट को ही लौटा देती है।

  • __next__(): यह विधि संग्रह से अगला मान लौटाती है। यदि वापस करने के लिए कोई और आइटम नहीं है, तो यह स्टॉपइटरेशन अपवाद उठाता है।

कस्टम इटरेटर का उदाहरण:

class MyIterator:
    def __init__(self, data):
        self.data = data
        self.index = 0

    def __iter__(self):
        return self

    def __next__(self):
        if self.index 



आउटपुट:

1
2
3

स्पष्टीकरण: इस उदाहरण में, MyIterator एक कस्टम इटरेटर वर्ग है जो संख्याओं की सूची पर पुनरावृत्त होता है। __next__() विधि सूची में अगला आइटम लौटाती है और जब लौटने के लिए कोई और आइटम नहीं रह जाता है तो StopIteration बढ़ा देती है।

अंतर्निर्मित संग्रहों के लिए डिफ़ॉल्ट इटरेटर

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

सूची के साथ उदाहरण:
my_list = [1, 2, 3]
my_iter = iter(my_list)

print(next(my_iter))  # Output: 1
print(next(my_iter))  # Output: 2
print(next(my_iter))  # Output: 3
# print(next(my_iter))  # This will raise StopIteration

2. जेनरेटर क्या है?

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

जेनरेटर कैसे काम करते हैं:

  • उपज: उपज कीवर्ड का उपयोग मूल्य उत्पन्न करने और फ़ंक्शन को रोकने, उसकी स्थिति को बचाने के लिए किया जाता है। जब जनरेटर को दोबारा बुलाया जाता है, तो यह वहीं से निष्पादन शुरू कर देता है जहां से इसे छोड़ा था।

उदाहरण:

def my_generator():
    yield 1
    yield 2
    yield 3

gen = my_generator()
for item in gen:
    print(item)

आउटपुट:

1
2
3

स्पष्टीकरण: इस उदाहरण में, my_generator एक जनरेटर फ़ंक्शन है जो एक-एक करके तीन मान उत्पन्न करता है। यील्ड के लिए प्रत्येक कॉल एक मान उत्पन्न करती है और अगले मान का अनुरोध होने तक फ़ंक्शन को रोक देती है।

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

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

उदाहरण:

def large_sequence():
    for i in range(1, 1000001):
        yield i

gen = large_sequence()
print(next(gen))  # Output: 1
print(next(gen))  # Output: 2

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

4. इटरेटर और जेनरेटर के लिए केस का उपयोग करें

इटरेटर्स:

  • कस्टम पुनरावर्तनीय ऑब्जेक्ट: जब आपको पुनरावृत्त तर्क पर अधिक नियंत्रण की आवश्यकता होती है।

  • अनंत अनुक्रम: मूल्यों का एक अंतहीन अनुक्रम उत्पन्न करना, जैसे सेंसर से डेटा।

जेनरेटर:

  • आलसी मूल्यांकन: बड़े डेटासेट को एक समय में एक आइटम संसाधित करना।

  • पाइपलाइन: डेटा प्रोसेसिंग पाइपलाइन का निर्माण जो स्ट्रीमिंग तरीके से डेटा को संभालती है।

5. जनरेटर अभिव्यक्तियाँ

परिभाषा: जेनरेटर अभिव्यक्ति जेनरेटर बनाने का एक संक्षिप्त तरीका प्रदान करते हैं। वे सूची समझ के समान हैं लेकिन वर्गाकार कोष्ठक के बजाय कोष्ठक का उपयोग करते हैं।

उदाहरण:

gen_exp = (x * x for x in range(5))
for value in gen_exp:
    print(value)

आउटपुट:

0
1
4
9
16

स्पष्टीकरण: यह जनरेटर अभिव्यक्ति एक जनरेटर बनाती है जो 0 से 4 तक संख्याओं के वर्ग उत्पन्न करती है।

6. व्यावहारिक उदाहरण और सर्वोत्तम प्रथाएँ

उदाहरण 1: बड़ी फ़ाइलें पढ़ना

def read_large_file(file_path):
    with open(file_path, 'r') as file:
        for line in file:
            yield line

for line in read_large_file('large_file.txt'):
    print(line.strip())

स्पष्टीकरण: यह जनरेटर फ़ंक्शन एक बड़ी फ़ाइल को लाइन दर लाइन पढ़ता है, जिससे एक समय में एक लाइन प्राप्त होती है। यह मेमोरी-कुशल है क्योंकि यह पूरी फ़ाइल को मेमोरी में लोड नहीं करता है।

उदाहरण 2: फाइबोनैचि अनुक्रम

def fibonacci():
    a, b = 0, 1
    while True:
        yield a
        a, b = b, a   b

fib = fibonacci()
for _ in range(10):
    print(next(fib))

आउटपुट:

0
1
1
2
3
5
8
13
21
34

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

7. साक्षात्कार प्रश्न और उत्तर

  1. पायथन में इटरेटर क्या है?
* An iterator is an object that allows you to traverse through all the elements of a collection one at a time, implementing the `__iter__()` and `__next__()` methods.
  1. पायथन में जनरेटर क्या है?
* A generator is a special type of iterator defined using a function and the `yield` keyword, allowing you to generate values on the fly without storing them all in memory.
  1. जनरेटर का उपयोग करने के क्या फायदे हैं?
* Generators are memory-efficient, as they generate values on the fly. They are useful for processing large datasets, building data pipelines, and working with potentially infinite sequences.
  1. जनरेटर अभिव्यक्तियाँ सूची समझ से कैसे भिन्न हैं?
* Generator expressions use parentheses and produce values one at a time, whereas list comprehensions use square brackets and generate the entire list in memory.
विज्ञप्ति वक्तव्य यह आलेख यहां पुन: प्रस्तुत किया गया है: https://dev.to/tapstechie/how-to-work-with-iterators-and-generator-in-python-35k3?1 यदि कोई उल्लंघन है, तो कृपया [email protected] से संपर्क करें इसे हटाने के लिए
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3