模拟实现vector类
发布人:shili8
发布时间:2025-02-10 19:30
阅读次数:0
**Vector 类模拟实现**
=====================在本文中,我们将模拟实现一个 `Vector` 类,支持基本的向量运算,如加法、减法、点积等。我们将使用 Python语言来实现这个类。
### Vector 类定义
class Vector: def __init__(self, *args): """ 初始化方法,接受任意数量的数字作为参数。 :param args: 数字列表 """ self.data = list(args)
在 `__init__` 方法中,我们使用 `*args` 来接收任意数量的数字作为参数,并将它们存储在 `self.data` 列表中。
### 加法运算
def __add__(self, other): """ 实现加法运算,要求两个向量具有相同维度。 :param other: 另一个 Vector 对象 :return:两个向量的和 """ if len(self.data) != len(other.data): raise ValueError("两者必须具有相同维度") return Vector(*[a + b for a, b in zip(self.data, other.data)])
在 `__add__` 方法中,我们首先检查两个向量是否具有相同维度。如果不相同,则抛出异常。否则,我们使用列表推导式来计算两个向量的和,并返回一个新的 `Vector` 对象。
### 减法运算
def __sub__(self, other): """ 实现减法运算,要求两个向量具有相同维度。 :param other: 另一个 Vector 对象 :return:两个向量的差值 """ if len(self.data) != len(other.data): raise ValueError("两者必须具有相同维度") return Vector(*[a - b for a, b in zip(self.data, other.data)])
`__sub__` 方法与 `__add__` 方法类似,但计算的是两个向量的差值。
### 点积运算
def dot(self, other): """ 计算两个向量的点积。 :param other: 另一个 Vector 对象 :return:两个向量的点积 """ if len(self.data) != len(other.data): raise ValueError("两者必须具有相同维度") return sum(a * b for a, b in zip(self.data, other.data))
在 `dot` 方法中,我们使用 `zip` 函数来将两个向量的元素对应起来,然后使用列表推导式和 `sum` 函数来计算点积。
### 向量长度
def length(self): """ 计算向量的长度。 :return: 向量的长度 """ return sum(a **2 for a in self.data) **0.5
在 `length` 方法中,我们使用列表推导式和 `sum` 函数来计算向量的平方和,然后取平方根得到向量的长度。
### 示例代码
v1 = Vector(3,4) v2 = Vector(5,6) print(v1 + v2) # (8,10) print(v1 - v2) # (-2, -2) print(v1.dot(v2)) #23print(v1.length()) #5.0
在示例代码中,我们创建两个 `Vector` 对象 `v1` 和 `v2`,然后使用加法、减法和点积运算来演示 `Vector` 类的基本功能。