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

Python中使用字典实现多项式乘法(无外部库与类)

字典实现多项式乘法的代码修复

要求不借助numpy、类或任何外部库,用字典实现多项式乘法。多项式用字典表示,键为次数,值为系数,例如{0: 7, 2: 5, 4: 3}对应多项式 $3x^4 + 5x^2 + 7$。

原代码问题分析

你的代码存在两个核心错误:

  1. 内层循环逻辑错误:遍历p2的所有项时,不断累积更新同一个erg_coeff和erg_exp,最终得到的是p1当前项与p2所有项的累积乘积,而非每个p1项和p2项的单独乘积。
  2. 重复遍历冗余:先后对p1→p2、p2→p1各做了一次遍历,导致生成多余的项(比如测试案例中的5次项)。

修复后的代码

def mlpt(p1, p2):
    p1_times_p2 = {}
    # 遍历p1的每一项
    for exp1, coeff1 in p1.items():
        # 遍历p2的每一项
        for exp2, coeff2 in p2.items():
            new_exp = exp1 + exp2
            new_coeff = coeff1 * coeff2
            # 累加相同次数的系数(合并同类项)
            if new_exp in p1_times_p2:
                p1_times_p2[new_exp] += new_coeff
            else:
                p1_times_p2[new_exp] = new_coeff
    return p1_times_p2

代码逻辑说明

  • 用items()直接获取每个项的次数和系数,逻辑更直观。
  • 每一对p1项和p2项单独计算乘积的次数与系数,避免累积错误。
  • 对相同次数的项做系数累加,完全符合多项式乘法的同类项合并规则。

测试验证

# 测试案例:(x²)(x² + x) = x⁴ + x³
p1 = {2: 1}        # x²
p2 = {1: 1, 2: 1}  # x² + x
print(mlpt(p1, p2))
# 输出:{4: 1, 3: 1},与预期一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 02:57:39