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

कैसे निर्धारित करें कि पाइथॉन में जेनरेटर खाली है

2024-11-16 को प्रकाशित
ब्राउज़ करें:190

How to Determine If a Generator is Empty in Python

एक जेनरेटर की रिक्तता का निर्धारण

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

पीक बनाम हैसनेक्स्ट

कुछ लोग सुझाव दे सकते हैं यह जाँचने के लिए कि जनरेटर में आइटम हैं या नहीं, peek() फ़ंक्शन का उपयोग करना। जबकि पीक() आपको जनरेटर के पहले आइटम को उपभोग किए बिना पुनः प्राप्त करने की अनुमति देता है, यह यह निर्धारित करने का कोई तरीका प्रदान नहीं करता है कि जनरेटर खाली है या नहीं। ऐसा इसलिए है क्योंकि जनरेटर खाली होने पर peek() एक स्टॉपइटरेशन अपवाद उठाता है, जो उस अपवाद से अप्रभेद्य है जो एक खाली जनरेटर पर पुनरावृत्त करने का प्रयास करते समय उठाया जाएगा।

इसी तरह, hasNext() फ़ंक्शन, आमतौर पर जावा में पाया जाता है, पायथन जेनरेटर में उपलब्ध नहीं है।

से रिक्तता की जांच की जा रही है प्रारंभ

यह निर्धारित करने के लिए कि क्या जनरेटर प्रारंभ से खाली है, आप एक कस्टम फ़ंक्शन का उपयोग कर सकते हैं जैसे प्रतिक्रिया में दिया गया है:

def peek(iterable):
    try:
        first = next(iterable)
    except StopIteration:
        return None
    return first, itertools.chain([first], iterable)

यह फ़ंक्शन जनरेटर के पहले तत्व को पुनः प्राप्त करता है, यदि जनरेटर खाली है तो कोई नहीं लौटाता है। यह एक संशोधित संस्करण लौटाकर जनरेटर की स्थिति को भी संरक्षित करता है जिसमें पहला तत्व शामिल है।

उपयोग

इस फ़ंक्शन का उपयोग करने के लिए, आप इसे जनरेटर के साथ कॉल कर सकते हैं तर्क:

res = peek(mysequence)
if res is None:
    # sequence is empty.  Do stuff.
else:
    first, mysequence = res
    # Do something with first, maybe?
    # Then iterate over the sequence:
    for element in mysequence:
        # etc.

यह जांच आपको यह निर्धारित करने की अनुमति देती है कि जेनरेटर खाली है या नहीं और उस पर पुनरावृत्ति करने से पहले, खाली केस को उचित रूप से संभाल लें।

विज्ञप्ति वक्तव्य यह आलेख यहां पुनर्मुद्रित है: 1729390457 यदि कोई उल्लंघन है, तो कृपया इसे हटाने के लिए स्टडी_गोलंग@163.कॉम से संपर्क करें।
नवीनतम ट्यूटोरियल अधिक>

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

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

Copyright© 2022 湘ICP备2022001581号-3