You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何创建支持实例间加法与乘法运算的Vector类

实现支持加法和点积的Vector类

没问题,我来帮你实现这个符合需求的Vector类,完全支持你要的逐元素加法和点积乘法逻辑:

完整代码实现

class Vector:
    def __init__(self, values):
        # 存储向量值,假设输入是合法的数字列表
        self.values = values
    
    def __add__(self, other):
        # 加法前检查两个向量长度是否一致
        if len(self.values) != len(other.values):
            raise ValueError("向量长度必须一致才能进行加法运算")
        # 逐元素相加,返回新的Vector实例
        new_values = [a + b for a, b in zip(self.values, other.values)]
        return Vector(new_values)
    
    def __mul__(self, other):
        # 点积运算前检查两个向量长度是否一致
        if len(self.values) != len(other.values):
            raise ValueError("向量长度必须一致才能进行点积运算")
        # 计算点积并返回结果
        dot_product = sum(a * b for a, b in zip(self.values, other.values))
        return dot_product
    
    def get_vals(self):
        # 返回向量值的副本,避免外部修改原实例的数据
        return self.values.copy()

代码说明

  • __init__方法:构造函数,接收一个数字列表并存储为实例变量。如果需要更严谨的话,可以添加输入验证(比如检查所有元素都是数字),这里先保持简洁满足你的需求。
  • __add__方法:重载+运算符,实现逐元素加法。首先检查两个向量长度是否相同(不同长度的向量无法相加),然后通过列表推导式和zip函数配对元素相加,最后返回一个新的Vector实例。
  • __mul__方法:重载*运算符,实现向量点积。同样先检查长度一致性,然后计算对应元素乘积的和并返回结果。
  • get_vals方法:返回向量值的副本,这样外部修改返回的列表不会影响原Vector实例内部的数据。

测试示例

按照你的需求测试代码:

v1 = Vector([1, 2, 1, 5])
v2 = Vector([2, 3, 1, 4])

# 测试加法运算
v3 = v1 + v2
print(v3.get_vals())  # 输出: [3, 5, 2, 9]

# 测试点积运算
print(v1 * v2)  # 输出: 29

运行结果完全符合你的预期。如果之后需要扩展功能(比如支持标量乘法、向量减法等),可以在这个基础上继续修改。

内容的提问来源于stack exchange,提问作者pawciopl

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.28 19:47:41