जब मैं लूप में जनरेटर का उपयोग करता हूं, तो ऐसा लगता है कि जब कोई और तत्व उत्पन्न नहीं होता है, तो ऐसा लगता है। अब, मुझे लूप के बिना जनरेटर का उपयोग करना होगा, और अगले तत्व प्राप्त करने के लिए अगले() का उपयोग करें। मेरी समस्या यह है कि, अगर कोई और तत्व नहीं हैं, तो मुझे कैसे पता चलेगा?पायथन 3.x: यदि जनरेटर के पास शेष तत्व हैं
मुझे पता है: अगले() कोई अपवाद नहीं है (स्टॉपइटरेशन), अगर कुछ भी नहीं बचा है, लेकिन इस तरह की एक साधारण समस्या के लिए अपवाद थोड़ा "भारी" नहीं है? क्या है_इनक्स्ट() या ऐसा कोई तरीका नहीं है? सभी को
--- TEST A (for loop) ---
abc
123
None
True
456.789
--- TEST B (try-except) ---
abc
123
None
True
456.789
--- GENERATOR MEMBERS ---
__class__, __delattr__, __doc__, __eq__, __format__, __ge__, __getattribute__, __gt__, __hash__, __init__, __iter__, __le__, __lt__, __name__, __ne__, __new__, __next__, __reduce__, __reduce_ex__, __repr__, __setattr__, __sizeof__, __str__, __subclasshook__, close, gi_code, gi_frame, gi_running, send, throw
धन्यवाद, और आपका दिन शुभ हो:
निम्नलिखित लाइनों स्पष्ट करना चाहिए, मैं क्या मतलब है:
#!/usr/bin/python3
# define a list of some objects
bar = ['abc', 123, None, True, 456.789]
# our primitive generator
def foo(bar):
for b in bar:
yield b
# iterate, using the generator above
print('--- TEST A (for loop) ---')
for baz in foo(bar):
print(baz)
print()
# assign a new iterator to a variable
foobar = foo(bar)
print('--- TEST B (try-except) ---')
while True:
try:
print(foobar.__next__())
except StopIteration:
break
print()
# assign a new iterator to a variable
foobar = foo(bar)
# display generator members
print('--- GENERATOR MEMBERS ---')
print(', '.join(dir(foobar)))
उत्पादन इस प्रकार है! :)
मुझे अभी एहसास हुआ है कि मैं 'numpy' का अध्ययन करने के लिए 'dis' करना चाहता हूं। ;) – n611x007