Tôi muốn thêm hai danh sách bắt đầu chiều dài khác nhau từ cánh phải Dưới đây là một ví dụThêm hai danh sách có độ dài khác nhau trong python, bắt đầu từ bên phải
[3, 0, 2, 1]
[8, 7]
Kết quả mong đợi:
[3, 0, 10, 8]
Danh sách này thể hiện hệ số đa thức
Đây là triển khai của tôi
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
Điều này làm việc tốt, chỉ muốn biết dù sao để làm tốt hơn, mã sạch hơn? Như python luôn luôn nhấn mạnh ở mã sạch, tôi muốn biết là có cách nào để viết sạch hơn, mã pythonic?
@Haidro: Tôi không nghĩ vậy. Tôi đã cố làm sáng tỏ ví dụ. Timothy, nếu làm rõ điều đó sai, hãy sửa nó. –
@TimPietzcker Tôi thấy, nhưng không phải là 7 + 1 9? Hoặc là nó 8 + 1 nhưng sau đó 7 + 2! = 10 – TerryA
@ Haidro: Rất tiếc :) –