我的问题是我需要以列表形式从 itertools.cycle
生成器交付批处理。
A cycle
接受一个可迭代对象并无限期地围绕自身循环。例如:
>>> my_cycle = itertools.cycle('abc')
>>> next(my_cycle)
'a'
>>> next(my_cycle)
'b'
>>> next(my_cycle)
'c'
>>> next(my_cycle)
'a'
等等。
问题就变成了,我们如何从循环生成器中传递批处理长度 n
的列表,同时保留我们在循环中的位置?
期望的输出是:
c = itertools.cycle('abc')
batch_size = 2
Out[0]: ['a', 'b']
Out[1]: ['c', 'a']
Out[2]: ['b', 'c']
我会发布我的解决方案,以防有人遇到同样的问题。
最佳答案
好像islice
是为此而生的:
>>> from itertools import cycle, islice
>>> size_of_batch = 5
>>> c = cycle('abcdefg')
>>> list(islice(c, size_of_batch))
['a', 'b', 'c', 'd', 'e']
>>> list(islice(c, size_of_batch))
['f', 'g', 'a', 'b', 'c']
关于python - 来自 itertools.cycle 生成器的列表理解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49080655/