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

如何生成数组的所有组合并计算组合内元素除以组合总和的结果

代码问题修复

原有代码核心问题

  • 生成组合时遍历长度从1开始,不符合要求的「长度≥2」的条件
  • 计算分母时错误取两个元素的和作为分母,没有统计当前组合所有元素的总和
  • 存在大量无效逻辑:比如乘积计算的循环完全没有用到,嵌套的j、k遍历逻辑只能处理长度为2的组合,无法适配更长的组合

修复后的代码

from itertools import combinations

n = int(input("Enter The Amount of Numbers in the List: "))
num_list = []
for _ in range(n):
    x = float(input("Enter the numbers: "))
    num_list.append(x)

result = []
# 只生成长度≥2的组合
for comb_len in range(2, len(num_list)+1):
    # 遍历所有指定长度的组合
    for comb in combinations(num_list, comb_len):
        # 计算当前组合的总和
        sum_comb = sum(comb)
        # 遍历组合内每个元素,计算占比后加入结果
        for num in comb:
            result.append(num / sum_comb)

print(result)

代码逻辑说明

  1. 直接从长度2开始生成组合,不用后续再做列表截断操作
  2. 对每个生成的组合先计算全部元素的总和作为分母
  3. 遍历组合内的每个元素,直接用元素值除以组合总和得到对应结果,不需要嵌套多层循环

示例运行验证

输入数组[1,2,3]时,输出结果为:
[0.3333333333333333, 0.6666666666666666, 0.25, 0.75, 0.4, 0.6, 0.16666666666666666, 0.3333333333333333, 0.5]
对应4个组合的计算结果,和需求完全匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 09:39:01