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

任务容量分配算法优化咨询:将数值分配至指定数量分组

更高效简洁的任务容量分配实现

嘿,你的实现逻辑是完全正确的,不过我们可以用更简洁、更Pythonic的方式来完成这个任务,同时保持甚至提升执行效率。

优化后的实现

首先,我们可以利用Python内置的divmod函数一次性获取商和余数,再通过列表乘法直接拼接结果,避免创建多个中间列表和额外的循环操作:

def capacity_distribution(task_size, people_size):
    """Distributes initial capacity to each person."""
    div, remainder = divmod(task_size, people_size)
    # 先分配基础任务量,再分配多1个任务的部分,和原代码输出顺序完全一致
    return [div] * (people_size - remainder) + [div + 1] * remainder

为什么这个实现更优?

  • 更简洁:用divmod替代分开计算//和%,一行代码拿到商和余数,减少重复逻辑,代码更紧凑。
  • 更高效率:列表乘法是Python底层优化过的操作,比手动循环生成列表再extend要快,避免了额外的内存操作和循环开销。
  • 可读性更强:代码逻辑一目了然,直接体现了「大部分人拿基础量,余数部分的人多拿1个」的分配规则。

验证输出

测试你给出的几个用例,输出和原代码完全匹配:

  • capacity_distribution(6, 2) → [3, 3]
  • capacity_distribution(7, 3) → [2, 2, 3]
  • capacity_distribution(11, 3) → [3, 4, 4]
  • capacity_distribution(18, 5) → [3, 3, 4, 4, 4]

如果任务分配的顺序不影响业务逻辑,也可以把[div+1] * remainder放在前面,结果同样正确,只是顺序不同而已。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:22:57