Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Vector(list):
- def __init__(self, *el):
- for e in el:
- self.append(e)
- def __add__(self, other):
- if type(other) is Vector:
- assert len(self) == len(other), "Error 0"
- r = Vector()
- for i in range(len(self)):
- r.append(self[i] + other[i])
- return r
- else:
- other = Vector.emptyvec(lens=len(self), n=other)
- return self + other
- def __sub__(self, other):
- if type(other) is Vector:
- assert len(self) == len(other), "Error 0"
- r = Vector()
- for i in range(len(self)):
- r.append(self[i] - other[i])
- return r
- else:
- other = Vector.emptyvec(lens=len(self), n=other)
- return self - other
- def __mul__(self, other):
- if type(other) is Vector:
- assert len(self) == len(other), "Error 0"
- r = Vector()
- for i in range(len(self)):
- r.append(self[i] * other[i])
- return r
- else:
- other = Vector.emptyvec(lens=len(self), n=other)
- return self * other
- def __truediv__(self, other):
- if type(other) is Vector:
- assert len(self) == len(other), "Error 0"
- r = Vector()
- for i in range(len(self)):
- r.append(self[i] / other[i])
- return r
- else:
- other = Vector.emptyvec(lens=len(self), n=other)
- return self / other
- def __pow__(self, other):
- if type(other) is Vector:
- assert len(self) == len(other), "Error 0"
- r = Vector()
- for i in range(len(self)):
- r.append(self[i] ** other[i])
- return r
- else:
- other = Vector.emptyvec(lens=len(self), n=other)
- return self ** other
- def __mod__(self, other):
- return sum((self - other) ** 2) ** 0.5
- def mod(self):
- return self % Vector.emptyvec(len(self))
- def dim(self):
- return len(self)
- def __str__(self):
- if len(self) == 0:
- return "Empty"
- r = [str(i) for i in self]
- return "< " + " ".join(r) + " >"
- def _ipython_display_(self):
- print(str(self))
- @staticmethod
- def emptyvec(lens=2, n=0):
- return Vector(*[n for i in range(lens)])
- @staticmethod
- def randvec(dim):
- return Vector(*[random.random() for i in range(dim)])
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement