python中的面向对象编程,将(三维数组元素)附加到列表中
我试图创建一个beamtracer,这样我可以存储每个点的三维位置以及三维方向向量,我希望self.z是一个列表,我可以在x和v是三维数组的时候附加一个2元素元组(self.x,self.v) 最后,我想返回我以前存储的所有点对,我真的看不出我的代码做错了什么。谢谢大家。这行不通:python中的面向对象编程,将(三维数组元素)附加到列表中,python,class,python-2.7,append,Python,Class,Python 2.7,Append,我试图创建一个beamtracer,这样我可以存储每个点的三维位置以及三维方向向量,我希望self.z是一个列表,我可以在x和v是三维数组的时候附加一个2元素元组(self.x,self.v) 最后,我想返回我以前存储的所有点对,我真的看不出我的代码做错了什么。谢谢大家。这行不通: import numpy as np """ A project on beamtracer """ class beam: def __init__(self,x = np.array([1,2,3]),v
import numpy as np
""" A project on beamtracer """
class beam:
def __init__(self,x = np.array([1,2,3]),v = np.array([2,3,4])):
self.x = np.array(x)
self.v = np.array(v)
self.X = [self.x]
self.V = [self.v]
self.z = [(self.X,self.V)]
def p(self):
return self.x
def k(self):
return self.v
def append(self,(self.x,self.v)):
return self.z(append(self.x,self.v))
def coll(self):
return self.z
self.x
只有在self
有一个值时才有意义,解析append
定义时就不是这样了
另外,self.z(append…
应该是self.z.append
。
你可以用
def append(self,(self.x,self.v)):
return self.z(append(self.x,self.v))
相反
警告:您可能需要重新考虑使用大量小型NumPy阵列。这类代码的总体性能往往令人失望(没有比使用Python列表或元组更好,有时甚至更差) 为了从NumPy中获得良好的性能,您通常希望尝试将计算安排为使用尽可能少的NumPy函数调用(理想情况下没有Python循环),并将这些函数调用应用于单个大数组,而不是对许多小数组进行大量函数调用
def append(self, x, v):
return self.z.append([x, v])