【发布时间】:2017-02-20 16:28:20
【问题描述】:
我想创建一个列表,其中包含最多 n
次的单项式basis = [lambda x:x**i for i in range(0,n+1)]
然而,这会创建一个 n 函数列表,但都是相同的一个(度数 n)而不是度数 0,1,2,...n
我也尝试过不使用列表理解:
basis = []
for i in range(0,n+1):
basis.append(lambda x:x**i)
但结果相同。用经典函数定义替换 lambda 函数也没有解决问题。
我检查了Python lambdas and scoping,但这并没有帮助,因为我不想存储函数值,而是函数本身。例如,我希望能够调用
basis[0](34)
这应该返回
1
【问题讨论】:
-
您可以使用
partial(docs.python.org/3/library/functools.html#functools.partial) 来执行此操作,但您需要一个适当的函数声明
标签: python list function lambda append