Результатом добавления двух векторов длины 3 должен быть вектор с 3 элементами, где каждый элемент является суммой соответствующих элементов в исходных двух векторах.
def __add__(self,other):
return Vector([a+b for a,b in zip(self.vector, other.vector)])
Используется zip
для перебора обоих начальных векторов вместе и построения нового списка с использованием понимания списка .
>>> x = Vector([2,4,6])
>>> y = Vector([7,8,9])
>>> x+y==Vector([9,12,15])
True
Подробнее:
Если вы хотите поддерживать скалярное умножение, как указано в ваших комментариях, тогда ваш операнд other
- это не другой вектор, а число.Таким образом, вам нужно умножить каждый элемент по отдельности на это число.
def __mul__(self, other):
return Vector([a*other for a in self.vector])
__rmul__ = __mul__
Это должно позволить вам выполнять v*5
и 5*v
, где v
- это Vector
объект.
>>> x = Vector([2,4,6])
>>> x*5==Vector([10,20,30])
True
Подробнее
Вот пример того, как вы можете написать точечное произведение между двумя векторами:
def dot(self, other):
return sum(a*b for (a,b) in zip(self.vector, other.vector))
>>> x = Vector([1,2,3])
>>> y = Vector([3,2,1])
>>> x.dot(y)
10