擅长:python、mysql、java
<p>这是一只经典的Python!。在</p>
<p>过滤器是一个特殊的可迭代对象。不过,你只能像生成器一样重复一次。因此,通过调用<code>list(people2)</code>,您正在迭代<code>filter</code>对象的每个元素来生成<code>list</code>。此时,您已经到达iterable的末尾,没有其他内容可返回。在</p>
<p>因此,当您再次调用<code>list(people2)</code>时,您将得到一个空列表。在</p>
<p>演示:</p>
<pre><code>>>> l = range(10)
>>> k = filter(lambda x: x > 5, l)
>>> list(k)
[6, 7, 8, 9]
>>> list(k)
[]
</code></pre>
<p>我应该提到,对于python2,<code>filter</code>返回一个列表,因此您不会遇到这个问题。当您将py3的懒惰求值引入图片中时,问题就出现了。在</p>