【发布时间】:2018-05-02 18:26:28
【问题描述】:
我想知道是否有一种 Python 的方法可以多次应用一个函数,其中 all 最后的结果是再次使用列表理解或生成器表达式而不是像这样的 for 循环的输入?
import numpy as np
def func(x, s):
return (5+sum(x))**(-1.06)/s
y = np.array([])
for i in range(5):
y = np.append(y, func(y[:i], s=i+1))
编辑:不幸的是,itertools.accumulate 似乎只考虑了最后一个结果,而不是所有最后一个结果。还有什么想法吗?
【问题讨论】:
-
寻找-
list comprehension or generator expression instead of a for loop背后的想法是什么?是性能还是其他? -
是的,有。它被称为
functools.reduce。 -
兴趣、表现和使用一个班轮。
-
这对你有用吗? [func(range(i), i+1) for i in range(5)] 并将其包含在 np.array 调用中?它依赖于 func 期望串行整数。如果您特别依赖列表中已有的数字,即您的情况,我不确定您是否可以理解。
-
@Love Tätting 这不会产生与我认为它不依赖于列表中已有数字的结果相同的结果,对吧?
标签: python function numpy list-comprehension generator-expression