擅长:python、mysql、java
<p>您正在lambda中使用变量<code>prime</code>,该变量是从封闭范围继承的引用。当您的代码计算lambda时,它将在继承引用的范围内使用绑定到该引用的任何值。当您不使用<code>tee</code>并计算列表时,所有lambda函数都是相同的,并且对<code>prime</code>使用相同的值</p>
<p><code>tee</code>的工作原理是将结果存储在一个列表中,并在稍后再次询问时从该列表中提供给您,因此对于<code>prime</code>的每个值,它实际上将过滤器应用于<code>L</code>中的所有值</p>
<p>您可以通过在<code>lambda</code>的作用域中绑定<code>prime</code>来解决这个问题,方法是将它作为一个带有默认值的参数传递。这会将该值保存为函数对象的一部分,然后引用<code>prime</code>是对该存储值的本地引用</p>