class VectorNDim: def __init__(self, n): self.coords = [1] + [0] * (n-1) def __len__(self): return len(self.coords) def __getitem__(self, i): return self.coords[i] def __setitem__(self, i, k): self.coords[i] = k def modul(self): s = 0 for c in self.coords: s = s + c ** 2 return s ** (1/2) # Alternativa: return sum(map(lambda x:x*x, self.coords)) ** (1/2) def escala(self, fact): for i in range(len(self.coords)): self.coords[i] = self.coords[i] * fact # Alternativa: self.coords = list(map(lambda x:x*fact, self.coords)) def normalitza(self): self.escala(1/self.modul()) def __add__(self, altre): vsum = VectorNDim(len(self)) for i in range(len(self)): vsum[i] = self[i] + altre[i] return vsum