<<线性代数(Python实现)>>总目录

<<专为程序员设计的线性代数课>> 慕课网教程
开始时间: 2019-09-18
最后一次更新时间: 2019-09-18

第1章 实现向量

路径: LinearAlgebra.playLA.Vector

LinearAlgebra

  • playLA
    • Vector
class Vector(object):

    def __init__(self, lst):
        self._values = list(lst)

    def __getitem__(self, index):
        """获取下标为index得元素"""
        return self._values[index]

    def __iter__(self):
        """返回向量得迭代器"""
        return self._values.__iter__()

    @classmethod
    def zero(cls, dim):
        """返回一个dim维度的零向量"""
        return cls([0] * dim)

    def __add__(self, other):
        """向量相加, 返回结果向量"""
        assert len(self) == len(other),\
            "Error in adding. Length of vectors must be same."
        return Vector([a+b for a,b in zip(self, other)])

    def __sub__(self, other):
        """向量相减, 返回结果向量"""
        assert len(self) == len(other), \
            "Error in subtracting. Length of vectors must be same."
        return Vector([a - b for a, b in zip(self, other)])

    def __mul__(self, other):
        """向量的数量左乘, 返回结果向量"""
        return Vector([other*e for e in self])

    def __rmul__(self, other):
        """向量的数量右乘, 返回结果向量"""
        return self*other

    def __pos__(self):
        """返回向量取正结果"""
        return 1 * self

    def __neg__(self):
        """返回向量取负结果"""
        return (-1) * self;

    def __len__(self):
        """返回向量长度"""
        return len(self._values)

    def __repr__(self):
        """命令行输出"""
        return "Vector({})".format(self._values)

    def __str__(self):
        """用户打印"""
        return "({})".format(", ".join(str(e) for e in self._values))