S.A*_*EEN -3 python caffe pycaffe
我想在函数中发送两个参数并接收两个值
我想修改这段代码,以便我能够发送两个参数并接收两个参数
list_value = [ 1, 2,0,-1,-9,2,3,5,4,6,7,8,9,0,1,50]
hnd = map(lambda (valua): function_f(valua), list_value)
Run Code Online (Sandbox Code Playgroud)
function_f是一个返回一个数字1或0的函数.
上面的代码可以在发送一个参数时完成工作,但我想发送两个而不是.所需函数的第一个参数是list_value,第二个参数是模型"net model train it using caffe"
所以我想编写一个函数,它可以完成前一个函数的相同工作,但返回两个参数,一个是[0或1],另一个是修改后的函数修改过的模型.
既然你说你只需要一个模型,而不是每个值的新模型,这很简单.更改:
hnd = map(lambda (valua): function_f(valua), list_value)
Run Code Online (Sandbox Code Playgroud)
至:
model = ... initialize a model that will be passed to every call ...
hnd = map(lambda valua: function_f(valua, model), list_value)
Run Code Online (Sandbox Code Playgroud)
只需确保function_f返回新值和模型,例如以前是否:
def function_f(val, model):
... calculate newval and make newmodel ...
return newval
Run Code Online (Sandbox Code Playgroud)
只需将其更改为:
def function_f(val, model):
... calculate newval and make newmodel ...
return newval, newmodel
Run Code Online (Sandbox Code Playgroud)
注意:如果需要使用lambdas map,请不要使用map; 它没有任何收获(在大多数情况下,生成器表达式或列表理解将以相同的速度运行,甚至更快,其中映射函数不是内置的CPython).也就是说,在您的特定情况下,您不需要lambda,例如,您可以这样做:
from future_builtins import map # Only on Py2; Py3 map is good
from itertools import repeat
model = ... initialize a model that will be passed to every call ...
hnd = map(function_f, list_value, repeat(model))
Run Code Online (Sandbox Code Playgroud)
或者只是用生成器表达式(除非该功能是一个Python内置的C语言实现,map基本上从来没有获得你的表现;如果你不想去想是否map是合适的,总是用列表解析/发电机expresssions,而不是map一个好主意):
# Change outside parens to brackets, [], for list comp
hnd = (function_f(x, model) for x in list_value)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10817 次 |
| 最近记录: |