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

Python利润值分解构建结果表:线性方程组求解与报错修复

问题修复方案

错误原因分析

IndexError: list assignment index out of range 通常是因为结果表初始化时的行数/列数不足,或者循环时访问了超出列表长度的索引。比如原代码可能只创建了和原表格同维度的结果表,没新增最后一行一列;或者循环索引没控制在正确范围内。

修复后代码实现

步骤说明

  1. 先获取原表格的行数m和列数n
  2. 初始化结果表:行数为m+1,列数为n+1,默认填充为0(或根据需求用None)
  3. 复制分配表的原有内容到结果表的前m行、前n列
  4. 遍历每个单元格,若分配表中该位置非None,则拆分对应利润值为X和Y(满足X+Y=原利润),将X存入结果表最后一行的对应列,Y存入结果表对应行的最后一列

代码示例

# 示例数据:利润表和分配表(同维度)
tabla_ganancias = [
    [150, 240, None],
    [300, None, 180],
    [None, 90, 210]
]
tabla_asignaciones = [
    [True, None, True],
    [None, False, True],
    [True, True, None]
]

# 获取原表格维度
m = len(tabla_ganancias)
n = len(tabla_ganancias[0]) if m > 0 else 0

# 初始化结果表:m+1行,n+1列,默认填0
tabla_resultado = [[0 for _ in range(n+1)] for _ in range(m+1)]

# 复制分配表内容到结果表前m行前n列
for i in range(m):
    for j in range(n):
        tabla_resultado[i][j] = tabla_asignaciones[i][j]

# 处理利润拆分
for i in range(m):
    for j in range(n):
        if tabla_asignaciones[i][j] is not None:
            ganancia = tabla_ganancias[i][j]
            if ganancia is None:
                continue  # 利润表对应位置无值则跳过
            # 拆分X和Y,这里示例按整数拆分,可根据需求调整规则
            X = ganancia // 2
            Y = ganancia - X
            # 存入结果表:X到最后一行对应列,Y到对应行最后一列
            tabla_resultado[m][j] = X
            tabla_resultado[i][n] = Y

# 打印结果表验证
for fila in tabla_resultado:
    print(fila)

关键修复点

  • 确保结果表的行数是m+1、列数是n+1,从根源避免索引越界
  • 循环时严格控制i的范围是0到m-1,j的范围是0到n-1,访问最后一行用m,最后一列用n
  • 先完成分配表内容复制,再处理利润拆分,避免覆盖结果数据

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 06:15:00