私はデモ用の任意の次元のVector
クラスを作成して、Pythonでいくつかの関数型プログラミングを示します。n次元「単位行列」を生成する方法は?
class Vector():
def __init__(self, *coords):
self.coords = coords
def __add__(this, that):
return Point(*[(x+y) for x,y in zip(this.coords, that.coords)])
#...
この例では、静的@classmethod
の例を思い付くしようとしますが、私は私にどんなn
のためのベクターのn次元の基底を与えるクラスのメソッドがあると便利だろうことを決めました。それは次のとおりです。
>>> Vector.get_base(dimensions = 2)
[Vector(1,0), Vector(0,1)]
>>> Vector.get_base(3)
[Vector(1,0,0), Vector(0,1,0), Vector(0,0,1)]
>>> Vector.get_base(1)
[Vector(1)]
私はしかし、しかし、巨大な脳のおならを抱えていると、「適切に」これらのリストを生成する方法の問題につまずいています。
def get_base(dimensions):
arrays = []
zeros = [0] * dimensions
for i in range(dimensions):
item = zeros
item[i] = 1
arrays.append(Vector(*array))
return arrays
もっと良い方法がなければならない:私が今まで考えることができますどのような
は、宣言型のソリューションです!どのようにして、この関数をうまくいってもっと簡潔なPythonの関数形式で書き直すことができますか?
次についてどのように