将函数应用程序映射到python中没有lambda的函数列表

时间:2015-07-28 07:59:45

标签: python

我有以下代码:

def f1():
    print("f1")

def f2():
    print("f2")

flist = [f1,f2]

list(map(lambda x: x(), flist))

我需要摆脱lambda因为它不能使用pickle转储。

是否有任何函数或构造运行作为参数接收的函数?

这是我需要修改和删除帮助函数“call”的实际代码:

from multiprocessing import Pool
def call(x):
    x()
p = Pool()
p.map(call, func_list)

2 个答案:

答案 0 :(得分:2)

你可以尝试

[f() for f in flist]

希望这会有所帮助:)

答案 1 :(得分:2)

<html> <body> <form id="contact_form" action="#" method="POST" enctype="multipart/form-data" style=" padding-left: 121px;"> <div class="row"> <label for="name" style=" margin-left: 9px;">Your name:</label><br /> <input id="name" class="input" name="name" type="text" value="" size="30" required/><br /> </div> </br> <div class="row"> <label for="email" style=" margin-left: 9px;">Your email:</label><br /> <input id="email" class="input" name="email" type="text" value="" size="30" required/><br /> </div> </br> <div class="row"> <label for="email" style=" margin-left: 9px;">Mobile #:</label><br /> <input id="email" class="input" name="mobile" type="text" value="" size="30" required/><br /> </div> </br> <div class="row"> <label for="email" style=" margin-left: 9px;">City:</label><br /> <input id="email" class="input" name="city" type="text" value="" size="30" required/><br /> </div> </br> <div class="row"> <label for="message" style=" margin-left: 9px;">Shipping Address: </label><br /> <textarea id="message" class="input" name="message" rows="7" cols="32" required></textarea><br /> </div> </br> <div class="row"> <input name="sub" id="submit_button" type="submit" value="Order Proceed Now" style="margin-top: 120px;background-color: green;padding:10px; color:#FFF; "/> </div> </br> </form> </body> </html> 函数不是基于python文档的此任务的理想方法:

  

map返回一个迭代器,它将函数应用于每个iterable项,产生结果。

在这里你只是在处理函数而你想要调用它们,所以你可以使用列表理解或循环遍历你的函数列表并以你喜欢的方式调用它们。

但是如果你的函数返回值我建议使用列表推导,因为你只需打印一些文本,你的函数返回map,你将创建一个额外的列表:

None

在这种情况下,一个简单的循环会很有效:

>>> [func() for func in flist]
f1
f2
[None, None]

如果你的函数返回值,你可以使用列表推导:

>>> for func in flist:
...    func()
... 
f1
f2