以块的形式迭代列表:Pythonic 解决方案
在本文中,我们探索以块的形式迭代 Python 列表的方法,其中每个块由特定数量的元素组成。给定的情况涉及一次处理四个整数。
传统方法
提供的代码段描述了对列表进行分块的 C 风格方法:
for i in range(0, len(ints), 4): # dummy op for example code foo += ints[i] * ints[i + 1] + ints[i + 2] * ints[i + 3]
虽然此方法有效,但它可能与 Python 的惯用方式不一致
Python 解决方案
1.使用 chunker 函数
从 Python 3.12 开始,Python 引入了 chunker 函数,它提供了一种简洁高效的方法来对任何序列进行分块:
def chunker(seq, size): return (seq[pos:pos + size] for pos in range(0, len(seq), size))
该函数创建一个生成器从给定的序列中生成指定大小的块。以下代码展示了用法:
for group in chunker(text, 7): print(repr(group),)
2.使用 itertools.islice
对于 3.12 之前的 Python 版本,itertools.islice 可用于分块:
from itertools import islice def grouper(seq, size): it = iter(seq) while True: chunk = list(islice(it, size)) if not chunk: return yield chunk
此函数类似地创建一个生成器,它生成元素列表从
结论
chunker 函数为 Python 3.12 及更高版本中的分块列表提供了原生且高效的解决方案。对于早期版本,grouper 函数提供了合适的替代方案。这些方法允许在处理大型列表时使用更简洁和惯用的代码。
以上是如何有效地分块迭代 Python 列表?的详细内容。更多信息请关注PHP中文网其他相关文章!