विचार करें:
>>> lst = iter([1,2,3])
>>> next(lst)
1
>>> next(lst)
2
इसलिए, पुनरावृत्ति को आगे बढ़ाना, जैसा कि अपेक्षित है, उसी वस्तु को बदलकर नियंत्रित किया जाता है।
यह मामला होने के नाते, मैं उम्मीद करूंगा:
a = iter(list(range(10)))
for i in a:
print(i)
next(a)
हर दूसरे तत्व को छोड़ने के लिए: कॉल को next
एक बार पुनरावृत्ति को आगे बढ़ाना चाहिए, फिर लूप द्वारा किए गए निहित कॉल को इसे दूसरी बार आगे बढ़ाना चाहिए - और इस दूसरी कॉल का परिणाम सौंपा जाएगा i
।
यह नहीं है लूप सूची में सभी वस्तुओं को प्रिंट करता है, बिना किसी लंघन के।
मेरा पहला विचार यह था कि ऐसा हो सकता है क्योंकि लूप कॉल iter
पर है जो इसे पारित किया गया है, और यह एक स्वतंत्र पुनरावृत्ति दे सकता है - यह मामला नहीं है, जैसा कि हमारे पास है iter(a) is a
।
तो, क्यों next
इस मामले में पुनरावृत्ति अग्रिम करने के लिए प्रकट नहीं होता है?