python - Python菜鸟问题:多项式乘法问题
问题描述
有人可以帮我解决我的代码吗,我得到的唯一答案是所有输入的 [0,0] -:
def add_poly(a,b,n):
p=[]
for i in range((n*2)-2):
p.append(0)
for i in range(0,n-1):
for j in range(0,n-1):
p[i+j]=(a[i]*b[j])
return p
n=2
a=[1,3]
b=[0,2]
print(add_poly(a,b,n))
解决方案
您的基本问题是range
在上限上是专有的。要遍历n
元素,您可以执行range(n)
,而不是range(n - 1)
. 这会给你一个循环0, 1, 2, ..., n-1
。
另一个问题是您提供了有关多项式大小的冗余信息。学位已经编码在它们的长度中。如果您提供n
,那是多余的信息,并且可能是错误的。例如,如果您想将二阶多项式 ( n=3
) 与三阶 ( n=4
) 相乘怎么办?
最后,您尝试实现的操作看起来像是乘法而不是加法。
因此,这里有一个示例,说明如何使用len
来获取多项式的阶数并enumerate
放置元素。您还可以在一行中预先分配输出列表:
def mult_poly(a, b):
p = [0] * (len(a) + len(b) - 1)
for i, x in enumerate(a):
for j, y in enumerate(b):
p[i + j] += x * y
return p
推荐阅读
- delphi - 如何在 Delphi 中将“字符集”转换为“字节集”
- scheme - 作为标准,Scheme 是否有任何用于调用 let 的语法糖?
- python - 使用 Multiprocessing Poolmap 执行进程时,该进程未完成
- python - 在python中为极坐标图添加标签
- android - CameraX 多个后置摄像头
- c++ - OpenMP 返回错误结果
- go - 安装链码后尝试查询状态数据库时出现 Hyperledger 错误
- mysql - SQL查询构建,需要建议
- google-sheets - 获取行数组取决于不同列中的值
- node.js - Express.js 与 mssql 高效的池管理