python lambda函数列表没有部分

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)

但它也没有用.任何帮助将不胜感激.欢呼声〜

sen*_*rle 6

你有效地传递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)

这也有效.