मैं this question का उत्तर लिख रहा था जब मैंने देखा कि मेरे सरल कार्यान्वयन ने सही नतीजे नहीं दिए हैं।ज़िप() मेरे जेनरेटर के मान क्यों छोड़ता है?
In [1]: import itertools
In [2]: gen = itertools.cycle((0,1,2))
In [3]: zip(gen, range(3))
Out[3]: [(0, 0), (1, 1), (2, 2)]
In [4]: zip(gen, range(3))
Out[4]: [(1, 0), (2, 1), (0, 2)]
जो भी कारण, gen
के next()
विधि कहा जाता है एक additioinal समय के लिए: एक ओर जहां नीचे बग शिकार, मैं निम्नलिखित देखा। इसे दर्शाने के लिए, मैं निम्नलिखित प्रयोग किया है:
class loudCycle(itertools.cycle):
def next(self):
n = super(loudCycle, self).next()
print n
return n
In [6]: gen = loudCycle((0,1,2))
In [7]: zip(gen, range(3))
0
1
2
0
Out[7]: [(0, 0), (1, 1), (2, 2)]