classVector:def__init__(self, lst):
self._values =list(lst)def__repr__(self):return"Vector({})".format(self._values)def__str__(self):return"({})".format(', '.join(str(item)for item in self._values))def__len__(self):'''长度'''returnlen(self._values)def__getitem__(self, index):'''获取索引元素'''return self._values[index]def__add__(self, other):assertlen(self)==len(other),'长度需要想等'return Vector([a + b for a, b inzip(self, other)])def__iter__(self):'''增加迭代器'''return self._values.__iter__()def__sub__(self, other):assertlen(self)==len(other),'长度需要想等'return Vector([a - b for a, b inzip(self, other)])def__mul__(self, other):return Vector([other * e for e in self])def__rmul__(self, other):return self * other
def__pos__(self):return1* self
def__neg__(self):return-1* self
@classmethoddefzero(cls, dim):return cls([0]* dim)if __name__ =='__main__':# 生成零向量print(Vector.zero(4))