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

如何将数字列表四舍五入到指定允许数值集合,精简现有实现?

代码精简优化方案

你可以直接使用numpy内置的分箱函数np.digitize替换手动循环和多重分支判断,既大幅压缩代码量,处理大规模数据时的性能也会有明显提升,且分箱逻辑和你原实现完全一致:

import numpy as np

goalNum = [-3, 0, 2, 4, 7, 10, 12]
# 对应你原代码的分段阈值
bins = [-1.5, 1, 3, 5.5, 8.5, 11, 12]

def roundGrade(grades):
    grades = np.asarray(grades)
    return np.array(goalNum)[np.digitize(grades, bins)]

方案优势

  • 省去了冗余的分支判断代码,后续如果要调整分段规则,只需要修改goalNum和bins两个列表即可,维护成本极低
  • 全程使用numpy向量化操作,没有Python层面的循环,数据量越大效率优势越突出
  • 自动兼容列表、numpy数组等多种输入格式,适配性更强

你可以用以下测试代码验证结果和原实现完全一致:

test_input = [-4, -1, 2, 5, 7, 10, 12]
print(roundGrade(test_input))
# 输出:[-3  0  2  4  7 10 12]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 10:33:00