使用 Python 按块迭代迭代器
按特定大小的块迭代迭代器是 Python 中的常见任务。要实现此目的,请考虑使用以下方法:
使用 itertools.grouper() 函数:
itertools.grouper() 函数提供了一种通用的分组方法一个可迭代的块。但是,它需要额外的处理来容纳不完整的最终块,这可以通过 incomplete 参数来实现。
from itertools import grouper it = iter([1, 2, 3, 4, 5, 6, 7]) chunk_size = 3 chunks = list(grouper(it, chunk_size, incomplete='ignore')) print(chunks) # [[1, 2, 3], [4, 5, 6], [7]]
使用 itertools.batched() 函数 (Python 3.12 ):
Python 3.12 中引入,itertools.batched() 函数显式处理分块并保留原始序列类型。
from itertools import batched it = [1, 2, 3, 4, 5, 6, 7] chunk_size = 3 chunks = list(batched(it, chunk_size)) print(chunks) # [[1, 2, 3], [4, 5, 6], [7]]
序列迭代器的替代解决方案:
对于序列,一个不太通用但方便的解决方案是使用列表切片步长等于块大小。
it = [1, 2, 3, 4, 5, 6, 7] chunk_size = 3 chunks = [it[i:i + chunk_size] for i in range(0, len(it), chunk_size)] print(chunks) # [[1, 2, 3], [4, 5, 6], [7]]
这些方法提供了有效的迭代方法块迭代器,允许灵活处理不完整的最终块并在必要时保留原始序列类型。
以上是如何使用 Python 分块迭代迭代器?的详细内容。更多信息请关注PHP中文网其他相关文章!