<p>因为您说您只需要一个模型,而不是每个值都需要一个新模型,所以这相当简单。更改:</p>
<pre><code>hnd = map(lambda (valua): function_f(valua), list_value)
</code></pre>
<p>致:</p>
<pre><code>model = ... initialize a model that will be passed to every call ...
hnd = map(lambda valua: function_f(valua, model), list_value)
</code></pre>
<p>只要确保<code>function_f</code>同时返回新值和模型,例如,如果它以前返回过:</p>
<pre><code>def function_f(val, model):
... calculate newval and make newmodel ...
return newval
</code></pre>
<p>把它改成:</p>
<pre><code>def function_f(val, model):
... calculate newval and make newmodel ...
return newval, newmodel
</code></pre>
<p>注意:如果需要使用<code>lambda</code>来使用<code>map</code>,则不要使用<code>map</code>;它不会为您带来任何好处(在大多数映射函数不是内置的CPython的情况下,生成器表达式或列表理解将以相同的速度甚至更快的速度运行)。也就是说,在您的特定情况下,您不需要<code>lambda</code>,例如,您可以:</p>
<pre><code>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))
</code></pre>
<p>或者只使用一个生成器表达式(除非该函数是用C语言实现的Python内置函数,<code>map</code>基本上不会获得性能;如果您不想考虑<code>map</code>是否合适,请始终使用列表理解/生成器表达式而不是<code>map</code>是一个好主意):</p>
<pre><code># Change outside parens to brackets, [], for list comp
hnd = (function_f(x, model) for x in list_value)
</code></pre>