背景
这里是一系列的文章,专门研究程序员可能使用到的线性代数。
划重点
2.4向量基本运算
- 向量加法,最终结果是(7, 7)
- 数量乘法
2.5 基础操作实现
class Vector:
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):
'''长度'''
return len(self._values)
def __getitem__(self, index):
'''获取索引元素'''
return self._values[index]
def __add__(self, other):
assert len(self) == len(other), '长度需要想等'
return Vector([a + b for a, b in zip(self, other)])
def __iter__(self):
'''增加迭代器'''
return self._values.__iter__()
def __sub__(self, other):
assert len(self) == len(other), '长度需要想等'
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
if __name__ == '__main__':
print(Vector([1, 2]))
print(len(Vector([1, 2, 3, 4, 5])))
print(Vector([1, 2, 3, 4, 19])[-1])
v1 = Vector([1, 2])
v2 = Vector([2, 3])
print("{} + {} = {}".format(v1, v2, v1 + v2))
print("{} - {} = {}".format(v1, v2, v1 - v2))
print("{} * {} = {}".format(v1, 3, v1 * 3))
print("{} * {} = {}".format(3, v1, 3 * v1))
print("+{} = {}".format(v1, +v1))
print("-{} = {}".format(v1, -v2))