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

如何用更Pythonic写法或Python内置函数实现分批生成逻辑?

更Pythonic的批量拆分实现方式

方法一:利用divmod一次性计算完整批次与余数

divmod是Python内置函数,可同时返回商和余数,完美适配这类拆分场景:

def batch(number, batch_size):
    full_batches, remainder = divmod(number, batch_size)
    # 生成所有完整批次
    yield from [batch_size] * full_batches
    # 有余数则生成最后一批
    if remainder:
        yield remainder

调用list(batch(21, 10))会得到[10, 10, 1],逻辑清晰且高效。

方法二:简化循环逻辑

通过min()函数直接取当前剩余数与批次大小的较小值,砍掉冗余的条件分支:

def batch(number, batch_size):
    while number > 0:
        take = min(number, batch_size)
        yield take
        number -= take

这个版本保留了生成器的惰性特性,代码更紧凑,可读性更强。

方法三:一行生成器表达式(适合临时场景)

如果无需封装成函数,也可以用一行生成器快速实现:

number = 21
batch_size = 10
batches = (batch_size if i < number // batch_size else number % batch_size 
           for i in range((number + batch_size - 1) // batch_size))
print(list(batches))  # 输出 [10,10,1]

不过这种写法可读性稍弱,更适合临时快速使用的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 12:46:10