You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python风格:如何分批生成字符串、字节或列表的指定范围子集?

分批遍历序列(字符串/列表/bytes)的简洁Python实现

你想要的分批遍历逻辑,完全可以利用Python的序列切片和range步长特性来简化代码,不需要手动计算余数和索引:

def chunkify(seq, chunksize: int):
    for i in range(0, len(seq), chunksize):
        yield seq[i:i+chunksize]

测试验证:

>>> [i for i in chunkify("123456789", 2)]
['12', '34', '56', '78', '9']
>>> [i for i in chunkify(b'abcdefgh', 3)]
[b'abc', b'def', b'gh']
>>> [i for i in chunkify([1,2,3,4,5], 2)]
[[1,2], [3,4], [5]]

写法优势说明

  • 借助range(0, len(seq), chunksize)直接生成每个批次的起始索引,步长等于批次大小,自动覆盖所有完整批次
  • Python切片seq[i:i+chunksize]在i+chunksize超出序列长度时,会自动截断到末尾,无需额外判断余数,完美处理剩余元素
  • 移除了冗余的math.floor计算和余数判断,代码逻辑更直观,完全贴合Python简洁优雅的设计风格

这个实现和你原有的C风格代码功能完全一致,但可读性和简洁性提升明显,同时兼容所有支持切片操作的序列类型(字符串、列表、bytes等)。

内容的提问来源于stack exchange,提问作者Tomáš Zato

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 16:35:23