我正在构建一个演示任意维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
必须有一个更好的办法!我如何以希望更简洁或Pythonic功能风格重写此函数?