首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Python Vectors重载添加

使用Python Vectors重载添加
EN

Stack Overflow用户
提问于 2013-12-11 09:27:56
回答 1查看 419关注 0票数 0

如你所见,我已经创建了一个函数,它允许我创建和修改一个向量。现在,我尝试使用def __add__(self, y)将向量相加。然而,我得到了一个IndexError。有没有什么明显的地方,你可以看到我的代码错误,因为我被卡住了。

代码语言:javascript
运行
复制
    def __add__(self, y):
        self.vector = []
        for j in range(len(self.vector)):
            self.vector.append(self.vector[j] + y.self.vector[j])
        return Vec(self.vector)
EN

回答 1

Stack Overflow用户

发布于 2013-12-11 09:37:02

您的代码中存在一些问题:

  • 当你做self.vector = []的时候,你基本上是在清除你的向量。这使得无法将其添加到另一个向量中。
  • 当您执行return Vec(self.vector)时,您会将一个列表传递给Vec构造函数-但您已将其定义为接受向量长度。
  • 您只能添加彼此长度相同的向量-您不会检查是否存在这种情况。

以下是解决了这些问题的__add__的可能实现:

代码语言:javascript
运行
复制
def __add__(self, y):
    size = len(self.vector)
    if size != len(y.vector):
        raise ValueError("Vectors must be the same size.")

    result = Vec(size)
    for j in range(size):
        result.vector[j] = self.vector[j] + y.vector[j]

    return result
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20508826

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档