在单个函数中组合lambda列表的pythonic方法是什么?例如:

lambdas = [lambda x, k=k: x+k for k in range(3)]

我希望在一个lambda中获得与此类似的所有内容,但无需键入:

f = lambda x: lambdas[2](lambdas[1](lambdas[0](x)))

推荐答案

您可以使用functools.reduce来执行此操作,如下所示:

from functools import reduce
lambdas = [lambda x, k=k: x+k for k in range(3)]
# x = 0
reduce(lambda x, l: l(x), lambdas, x)
# -> l[2](l[1](l[0](x)))
# step_1 : x = x , l = lambda[0] -> lambda[0](x)
# step_2 : x = lambda[0](x), l = lambda[1] -> lambda[1](lambda[0](x))
# step_3 : x = lambda[1](lambda[0](x)), l = lambda[2] -> lambda[2](lambda[1](lambda[0](x)))

Python相关问答推荐

2维数组9x9,不使用numpy.数组(MutableSequence的子类)

使用numpy提取数据块

由于NEP 50,向uint 8添加-256的代码是否会在numpy 2中失败?

如何将双框框列中的成对变成两个新列

需要计算60,000个坐标之间的距离

按顺序合并2个词典列表

如何在虚拟Python环境中运行Python程序?

在Wayland上使用setCellWidget时,try 编辑QTable Widget中的单元格时,PyQt 6崩溃

对象的`__call__`方法的setattr在Python中不起作用'

组/群集按字符串中的子字符串或子字符串中的字符串轮询数据框

从嵌套的yaml创建一个嵌套字符串,后面跟着点

如何使用SentenceTransformers创建矢量嵌入?

有没有办法让Re.Sub报告它所做的每一次替换?

合并相似列表

如何设置nan值为numpy数组多条件

如何根据一定条件生成段id

用来自另一个数据框的列特定标量划分Polars数据框中的每一列,

在任何要保留的字段中添加引号的文件,就像在Pandas 中一样

为什么在更新Pandas 2.x中的列时,数据类型不会更改,而在Pandas 1.x中会更改?

为什么内置的sorted()对于一个包含降序数字的列表来说,如果每个数字连续出现两次,会变慢?