擅长:python、mysql、java
<p>下面是一个基本的非itertools实现:</p>
<pre><code>class CyclicIterable:
def __init__(self, data):
self._data = list(data)
def __iter__(self):
while True:
yield from self._data
cycle = CyclicIterable(['a', 'b', 'c', 'd'])
for i, x in zip(range(5), cycle):
print(x)
</code></pre>
<p>注意,没有必要实现<code>__next__</code>,因为<code>Cycle</code>类本身与<code>list</code>一样,<em>不是迭代器。</em>要显式地从中获取迭代器,可以编写:</p>
<pre><code>it = cycle.__iter__()
print(next(it))
print(next(it))
print(next(it))
print(next(it))
print(next(it))
</code></pre>
<p>当然,您可以实例化任意多个迭代器。你知道吗</p>