首页 > 解决方案 > 从列表中调用 lambda 函数

问题描述

如果我有一个包含 lambda 函数的列表,例如:

a = [lambda x: x * 2]

我怎么能把这个 lambda 函数调用到一个列表中:

b = [1,2,3,4]

这样它的结果可能是:

result = list(map(lambda x: x * 2,  b))

并得到:

[2,4,6,8]

此外,如果 a 包含两个 lambda 函数,例如:

a = [lambda x:x * 2, lambda x: x-1]

我如何在不使用 for 循环或列表理解但使用 map() 的情况下调用这些函数来列出 b?

我希望有人可以帮助我!

标签: pythonlistlambda

解决方案


在包含在列表中的单个 lambda 的特殊情况下,执行

result = list(map(a[0], b))

但是python中没有特殊情况。因此,对于一般情况,您可以有一个平面列表:

result = [f(x) for f in a for x in b]

或嵌套的:

result = [[f(x) for f in a] for x in b]

a您可以通过在和上交换循环来反转列表的排序顺序b

您甚至可以使用itertools.product来获得扁平外壳(再次使用a并且b可以互换以更改结果的顺序):

result = [f(x) for f, x in itertools.product(a, b)]

推荐阅读