地图功能的应用程序,而不拉姆达在python
问题描述:
我有以下代码:地图功能的应用程序,而不拉姆达在python
def f1():
print("f1")
def f2():
print("f2")
flist = [f1,f2]
list(map(lambda x: x(), flist))
我需要摆脱拉姆达的,因为它不能用泡菜倾倒。
是否有任何函数或构造运行收到的函数作为参数?
下面是实际的代码,我需要修改和删除的辅助函数 “调用”:
from multiprocessing import Pool
def call(x):
x()
p = Pool()
p.map(call, func_list)
答
你可以尝试
[f() for f in flist]
希望这有助于:)
答
的map
函数不是基于python文档的此任务的愿望方法:
map
返回一个将函数应用于每个可迭代项的迭代器,以产生结果。
在这里,你只是处理函数,你想打电话给他们,所以你可以使用列表理解或循环遍历你的函数列表,并以你喜欢的方式调用它们。
但是如果你的函数返回值,我建议使用列表理解,因为在这里,因为你只是打印一些文字你的函数返回None
,你会创建一个额外的列表:
>>> [func() for func in flist]
f1
f2
[None, None]
在这种情况下,一个简单的循环会高效:
>>> for func in flist:
... func()
...
f1
f2
如果你的函数返回值,你可以使用列表理解:
>>> def f1():
... return "f1"
...
>>> def f2():
... return "f2"
...
>>> flist = [f1,f2]
>>> [func() for func in flist]
['f1', 'f2']
我需要使用“地图”功能。这只是一个大框架代码,我必须使用它的“地图” –
@GabrielCiubotaru:*** Lamda函数*是“匿名函数”**。你可以创建一个新的函数,例如'callFunc(func)',并传递一个函数对象给'callFunc'调用:'callFunc(func):func()'。现在的地图是:'list(map(callFunc,flist))' – elegent
我知道,但我想知道python是否已经实现了。既然它也有“功能编程”的范例,我认为“功能应用”是必须的 –