擅长:python、mysql、java
<p>如果要在一个周期结束后重新启动迭代,请尝试:</p>
<pre><code>def my_iter(s, d):
i = 0
while True:
if i > d:
i = 0
yield s[i:] + s[:max(0, i - 1)]
i += 1
s = '123456789 '
it = my_iter(s, 9)
for _ in range(20):
print(next(it))
</code></pre>
<p>输出:</p>
<pre><code>123456789
23456789
3456789 1
456789 12
56789 123
6789 1234
789 12345
89 123456
9 1234567
12345678
123456789
23456789
3456789 1
456789 12
56789 123
6789 1234
789 12345
89 123456
9 1234567
12345678
</code></pre>
<hr/>
<p>或者,如果要提供与先前运行相同的输出,请尝试:</p>
<pre><code>def my_iter(s, d):
i = 0
while True:
yield s[i:] + s[:max(0, i - 1)]
i += 1
s = '123456789 '
it = my_iter(s, 9)
for _ in range(12):
print(next(it))
</code></pre>
<p>输出:</p>
<pre><code>123456789
23456789
3456789 1
456789 12
56789 123
6789 1234
789 12345
89 123456
9 1234567
12345678
123456789
123456789
</code></pre>