擅长:python、mysql、java
<p>不幸的是,这是不可能的,因为<a href="http://docs.python.org/3/reference/expressions.html#lambda" rel="nofollow">body of a lambda</a>只允许<a href="http://docs.python.org/3/reference/expressions.html#grammar-token-expression_nocond" rel="nofollow">simple <em>expressions</em></a>,而<code>student.age += 3</code>是<a href="http://docs.python.org/3/reference/simple_stmts.html#augmented-assignment-statements" rel="nofollow"><em>statement</em></a>。所以你不能在那里用羔羊。但是,您仍然可以使用映射解决方案:</p>
<pre><code>def incrementAge (student):
student.age += 3
return student
students2 = map(incrementAge, students)
</code></pre>
<p>注意<code>students2</code>将包含与<code>students</code>相同的学生,因此您不需要捕获输出(或从<code>incrementAge</code>返回某些内容)。还要注意,在Python 3中,<code>map</code>返回一个需要首先迭代的生成器。您可以在它上调用<code>list()</code>来执行此操作:<code>list(map(…))</code>。</p>
<p>最后,一个更好的解决方案是使用一个简单的循环。这样,你就不需要一个函数或创建一个重复的学生列表,而且你也可以非常清楚地表明你的意图:</p>
<pre><code>for student in students:
student.age += 3
</code></pre>