अजगर डॉक्स से itertools सीखने की कोशिश कर रहा था। मैं count फंक्शन से गुजर रहा था और इसे दोहराया गया उदाहरण दिया। हालांकि, मुझे देखने के लिए कोई आउटपुट नहीं मिला।

def count(start=0, step=1):
    n = start
    while True:
        yield n
        n += step

आउटपुट था:

>>> print(count(2.5,0.5))
<generator object count at 0x00000254BF3FEA48>
0
Narayanan Cv 23 अप्रैल 2020, 16:31

2 जवाब

यह एक जनरेटर फ़ंक्शन है (yield द्वारा दर्शाया गया है कीवर्ड)। यह उपज पर एक (अनंत) iterator लौटाता है वस्तुएं:

def count(start=0, step=1):
    n = start
    while True:
        yield n
        n += step

यदि आप उचित आउटपुट देखना चाहते हैं, तो आपको इसे पुनरावृत्त/उपभोग करना होगा:

cnt = count(2.5, 0.5)
for i in range(10):
    x = next(cnt)
    print(x)

आप बस यह भी कर सकते हैं:

for x in count(2.5, 0.5):
    print(x)

लेकिन यह हमेशा के लिए चलेगा ;-)

1
user2390182 23 अप्रैल 2020, 16:45

यदि आप किसी फ़ंक्शन में कोई मान प्राप्त करते हैं, तो आप एक जनरेटर बनाते हैं। इसलिए जब आप अपना count फ़ंक्शन प्रिंट करते हैं, तो कुछ इस तरह प्रदर्शित होना चाहिए:

<generator object count at 0x0000025614C3F248>

तो उत्पन्न मूल्यों को मुद्रित करने के लिए, आपको जनरेटर पर पुनरावृति करना होगा।

for e in count(2.5,0.5):
    print(e)

या इसका अगला मान next() से प्राप्त करें

print(next(count(2.5,0.5)))
1
wjandrea 23 अप्रैल 2020, 16:46