python - 来自 itertools.cycle 生成器的列表理解

标签 python python-3.x python-itertools cycle

我的问题是我需要以列表形式从 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/

相关文章:

python-3.x - 使用 Dynamorm 在 Python 中构建 AWS SAM 嵌套应用程序

python - itertools.groupby 中组大小的限制

python - 解析 JSON 文件时出现 KeyError

python - django - 模板过滤器中的多个排除

python - 使用 postman 发出 `_doPostBack` 请求

list - 将python中的单个有序列表转换为字典,pythonically

python - 防止 itertools.permutation 中的内存错误

从 root 继承的 python 记录器级别默认设置为警告

python - 将项目列表转换为项目元组列表

python-3.x - Python+Selenium 首次加载内存不足错误