/ / Estou obtendo um resultado “[<generator object <genexpr> em 0x00000000029FC870>]”? O que há de errado com o meu código aqui - python, matrizes, normalização

Estou obtendo um resultado “[<generator object <genexpr> em 0x00000000029FC870>]”? O que há de errado com o meu código aqui - python, matrizes, normalização

class Vector(object):
def __init__(self,coordinates):
try:
if not coordinates:
raise ValueError
self.coordinates=coordinates
self.dimension=len(coordinates)

except ValueError:
raise ValueError("The coordinates must be non empty")

except TypeError:
raise TypeError("The coordinates must be iterable")

def __str__(self):
return "Vector: {}".format(self.coordinates)

def magnitude(self):
mag = [(sum(x**2 for x in self.coordinates))**0.5]
return Vector(mag)

def normalize(self):
mag= self.magnitude()
normal= [((1/mag)*x for x in self.coordinates)]
return Vector(normal)

vector_m=Vector([5.581,-2.136])
print vector_m.normalize()

vector_m=Vector([-0.221,7.437])
print vector_m.magnitude()

Respostas:

0 para resposta № 1

este

normal= [((1/mag)*x for x in self.coordinates)]

cria uma lista de 1 elemento contendo um gerador. A expressão

((1/mag)*x for x in self.coordinates)

é um expressão geradora. O que você quer é:

normal= [(1/mag)*x for x in self.coordinates]