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

如何优化将整数按指定区间转换为分箱的Python函数?

优化整数分箱的实现方案

你需要实现的是将整数num按指定区间分箱,原代码通过多分支判断实现了需求,但可以通过更简洁、可扩展的方式重构。

优化后的实现代码

def create_bins(num):
    """Create Bins as per given intervals."""
    # 定义各固定区间的容量:对应[1,200)、[200,400)、[400,800)、[800,1200)的区间长度
    bins_capacities = [199, 200, 400, 400]
    remaining = num
    result = []
    
    for capacity in bins_capacities:
        if remaining <= 0:
            break
        # 取当前剩余数值和区间容量的较小值作为分箱值
        bin_value = min(remaining, capacity)
        result.append(bin_value)
        remaining -= bin_value
    
    # 如果还有剩余,说明num超过1200,加入最后一个分箱
    if remaining > 0:
        result.append(remaining)
    
    return result

代码逻辑说明

  1. 定义固定区间容量:bins_capacities列表直接对应每个前置区间的最大可容纳数值,比如199是[1,200)的区间长度(200-1),200是[200,400)的区间长度(400-200),以此类推。
  2. 循环处理分箱:遍历每个固定容量,每次取当前剩余数值和区间容量的最小值加入结果,同时更新剩余数值,剩余为0时提前终止循环,避免无效遍历。
  3. 处理超区间情况:如果遍历完所有固定区间后还有剩余数值,说明num大于1200,直接将剩余值作为最后一个分箱加入结果。

测试验证

  • 输入create_bins(1041):剩余数值依次减去199、200、400后,剩余242,结果为[199, 200, 400, 242],符合预期。
  • 输入create_bins(150):直接加入150,返回[150]。
  • 输入create_bins(300):加入199后剩余101,返回[199, 101]。
  • 输入create_bins(1300):遍历完所有固定容量后剩余101,返回[199, 200, 400, 400, 101]。

优化优势

  • 简洁易读:去掉了冗余的多分支判断,逻辑更统一。
  • 扩展性强:如果后续需要调整区间范围或新增区间,只需修改bins_capacities列表,无需修改大量条件分支。
  • 鲁棒性高:避免了因分支遗漏导致的逻辑错误,减少维护成本。

内容的提问来源于stack exchange,提问作者Arun Kumar Khattri

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 03:22:32