擅长:python、mysql、java
<p>您可以使用itertools的<code>itertools.cycle</code>和<code>grouper</code>配方</p>
<pre><code>import itertools
def grouper(iterable, n, fillvalue=None):
"Collect data into fixed-length chunks or blocks"
# grouper('ABCDEFG', 3, 'x') > ABC DEF Gxx"
args = [iter(iterable)] * n
return itertools.zip_longest(*args, fillvalue=fillvalue)
data = [1,2,3,4,5]
batch_size = 4
how_many_groups = 5
groups = grouper(itertools.cycle(data), batch_size)
chunks = [next(groups) for _ in range(how_many_groups)]
</code></pre>
<p>块的结果是:</p>
<pre><code>[(1, 2, 3, 4),
(5, 1, 2, 3),
(4, 5, 1, 2),
(3, 4, 5, 1),
(2, 3, 4, 5)]
</code></pre>
<p>因此,如果您真的需要这些列表,那么您必须将其转换为列表(<code>[list(next(groups)) for ...]</code>)</p>