पायथन के itertools.cycle के लिए दस्तावेज़() के रूप में एक छद्म कोड कार्यान्वयन देता है:पायथन की itertools.cycle को पुनरावर्तनीय की एक प्रति बनाने की आवश्यकता क्यों है?
def cycle(iterable):
# cycle('ABCD') --> A B C D A B C D A B C D ...
saved = []
for element in iterable:
yield element
saved.append(element)
while saved:
for element in saved:
yield element
नीचे, यह कहा गया है: "ध्यान दें, टूलकिट का यह सदस्य महत्वपूर्ण सहायक भंडारण की आवश्यकता हो सकती (की लंबाई के आधार पुनरावृत्त)। "
मैं मूल रूप से इस मार्ग नीचे जा रहा था, को छोड़कर मैं ऐसा किया, जो iterable की एक प्रति बनाने की आवश्यकता नहीं है:
def loop(iterable):
it = iterable.__iter__()
while True:
try:
yield it.next()
except StopIteration:
it = iterable.__iter__()
yield it.next()
x = {1, 2, 3}
hard_limit = 6
for i in loop(x):
if hard_limit <= 0:
break
print i
hard_limit -= 1
प्रिंट:
1
2
3
1
2
3
हाँ, मैं अपने कार्यान्वयन का एहसास str के लिए काम नहीं करेगा, लेकिन यह किया जा सकता है। मैं और अधिक उत्सुक हूं कि यह एक और प्रति क्यों बनाता है। मुझे लगता है कि इसे कचरा संग्रह के साथ करना है, लेकिन मुझे पाइथन के इस क्षेत्र में अच्छी तरह से अध्ययन नहीं किया जाता है।
धन्यवाद!
@Martijn आपने सिंटैक्स हाइलाइटिंग को कैसे जोड़ा? मैं यह नहीं समझ सका कि यह कैसे करें ... – stantonk
मैंने नहीं किया; मैंने 'पायथन' टैग जोड़ा और फिर हाइलाइटिंग स्वचालित रूप से लागू होती है। लेकिन टैग हाइलाइटिंग के बिना भी अक्सर वैसे भी सटीक अनुमान लगाया जाता है। –
अहह, लेकिन पायथन 2.7 टैग नहीं है? अजीब ... – stantonk