python – 来自某一点的向量的累积和

我有一个向量列表,一个标量列表和一个由元组表示的起点.

vecs = [(1,1), (2,3), (-1,1)]
scalars = [2, 3, 2]
start = (-5,0)

我有一个函数来向一个点添加“k次”向量.

def add_vector(point, k, vec):
    return (point[0]+k*vec[0], point[1]+k*vec[1])

我想得到折线上的点列表,这样:

result[0] = start
result[n+1] = add_vector(result[n], scalars[n], vecs[n]) 

我想过使用itertools.accumulate,但func参数必须是两个参数的函数.有任何想法吗 ?

最佳答案 刚想通了我可以创建一个生成器函数而不是使用itertools.accumulate ……

def accumulate_vector(start, scalars, vecs):
    prev = start
    yield start
    for k, vec in zip(scalars, vecs):
        prev = add_vector(prev, k, vec)
        yield prev
点赞