gpt4 book ai didi

python - 在python中添加两个不同长度的列表,从右边开始

转载 作者:太空狗 更新时间:2023-10-29 21:18:38 25 4
gpt4 key购买 nike

我想从右边开始添加两个不同长度的列表这是一个例子

[3, 0, 2, 1]
[8, 7]

预期结果:

[3, 0, 10, 8]

这些列表表示多项式的系数

这是我的实现

class Polynomial:
def __init__(self, coefficients):
self.coeffs = coefficients

def coeff(self, i):
return self.coeffs[-(i+1)]

def add(self, other):
p1 = len(self.coeffs)
p2 = len(other.coeffs)
diff = abs(p1 - p2)
if p1 > p2:
newV = [sum(i) for i in zip(self.coeffs, [0]*diff+other.coeffs)]
else:
newV = [sum(i) for i in zip([0]*diff+self.coeffs, other.coeffs)]
return Polynomial(newV)

def __add__(self, other):
return self.add(other).coeffs

这个工作正常,只是想知道如何做得更好、更干净的代码?由于 python 总是强调干净的代码,我想知道有什么方法可以编写更干净的 pythonic 代码?

最佳答案

编辑(2020-18-03):

>>> P = [3, 0, 2, 1]
>>> Q = [8, 7]
>>> from itertools import zip_longest
>>> [x+y for x,y in zip_longest(reversed(P), reversed(Q), fillvalue=0)][::-1]
[3, 0, 10, 8]

显然,如果您选择系数以相反方式排序的约定,您可以只使用

P = [1, 2, 0, 3]
Q = [7, 8]
[x+y for x,y in zip_longest(P, Q, fillvalue=0)]

关于python - 在python中添加两个不同长度的列表,从右边开始,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17521145/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com