我做了一个类来计算三维向量的一些运算,我是否可以修改代码,使它计算相同的运算,但对于任意维的向量n?你知道吗
import sys
class Vector:
def __init__(self,x,y,z):
self.x= x
self.y= y
self.z= z
def __repr__(self):
return "(%f,%f,%f)"%(self.x,self.y,self.z)
def __add__(self,other):
return (self.x+other.x,self.y+other.y,self.z+other.z)
def __sub__(self,other):
return (self.x-other.x,self.y-other.y,self.z-other.z)
def __norm__(self):
return (self.x**2+self.y**2+self.z**2)**0.5
def escalar(self,other):
return (self.x*other.x+self.y*other.y+self.z*other.z)
def __mod__(self,other):
return (self.x%other.x,self.y%other.y,self.z%other.z)
def __neg__(self):
return (-self.x,-self.y,-self.z)
例如,对于n维向量
这是可能的。请注意,
__add__
重写返回一个新的Vector
实例,而不是您的案例中的tuple
。然后同样地调整你的其他方法。你知道吗有更多的'聪明'的方法adding elements from two lists, into a third。如果性能是一个问题(或者在任何其他情况下只是一个练习,IMO),那么你真的不应该这样做。看看numpy。你知道吗
使用列表来存储系数,而不是显式变量。对于求反、加、减等,你只需在列表上迭代。你知道吗
在初始化方面,需要使用
*args
作为输入。请看这篇文章,了解它的工作原理:https://stackoverflow.com/a/3394898/1178052相关问题 更多 >
编程相关推荐