Jer*_*Gao 6 python lambda list-comprehension function list
我一直在尝试使用list comprehension在python中生成lambda函数列表.但它不起作用,
例如
fl=[lambda x: x**i for i in range(5)]
Run Code Online (Sandbox Code Playgroud)
我检查了另一个问题,它基本上根据i的引用生成相同的函数.
所以我也试过偏.
from functools import partial
fl=[partial(lambda x: x**i) for i in range(5)]
Run Code Online (Sandbox Code Playgroud)
但它也没有用.任何帮助将不胜感激.欢呼声〜
你有效地传递i了名字.
fl=[lambda x: x**i for i in range(5)]
Run Code Online (Sandbox Code Playgroud)
每次lambda执行时,它都会将相同i的函数绑定到函数,因此当函数执行(稍后)时,它会使用then-current的值i(将为4).您应该将其作为默认参数传递:
fl=[lambda x, j=i: x**j for i in range(5)]
Run Code Online (Sandbox Code Playgroud)
实际上,我注意到你在滥用partial.这里:
fl = [partial(lambda x, y: y ** x, i) for i in range(5)]
Run Code Online (Sandbox Code Playgroud)
这也有效.