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

如何用列表推导式将bytes对象分割为固定大小元素列表

分割bytes对象为固定大小的列表(忽略填充)

你原来的代码问题在于range(max_size)只会生成0到41的整数,无法正确生成切片所需的起始、结束索引对。以下是符合需求的列表推导式实现:

如果需要忽略最后一段不足指定大小的部分(仅保留长度恰好为max_size的bytes块):

max_size = 42
def foo(b: bytes):
    return [b[i:i+max_size] for i in range(0, len(b) - len(b) % max_size, max_size)]

如果允许保留最后一段长度小于max_size的块(仅忽略填充补全操作,而非丢弃短块):

max_size = 42
def foo(b: bytes):
    return [b[i:i+max_size] for i in range(0, len(b), max_size)]

逻辑说明

  • range(0, len(b), max_size)生成所有切片的起始索引,步长设为max_size,确保每个切片的起始位置精准对齐。
  • 第一种写法通过len(b) - len(b) % max_size计算出最后一个完整块的结束位置,彻底避免生成不足长度的块,完全匹配“忽略填充”的需求。
  • 列表推导式保持了你偏好的简洁、易读且高效的特性,无需冗余的普通for循环结构。

内容的提问来源于stack exchange,提问作者Vorac

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 21:55:11