擅长:python、mysql、java
<p>您可以使用<a href="https://docs.python.org/2/tutorial/datastructures.html#list-comprehensions" rel="nofollow noreferrer">list comprehension</a>:</p>
<pre><code>results = [d for d in l if d['price'] == 50]
</code></pre>
<p>这在算法上与循环没有什么不同(它还必须迭代整个列表),但是理解是用C优化的,因此速度更快。另一种选择是使<code>results</code>成为惰性迭代器:</p>
<pre><code># generator expression
results = (d for d in l if d['price'] == 50)
# filter (not the most elegant/readable with lambda)
results = filter(lambda d: d['price'] == 50, l)
</code></pre>
<p>这将不会在声明时迭代<code>list</code>。它只在您迭代<code>results</code>(您只能这样做一次)时才会这样做。如果您不总是或只是部分地需要迭代<code>results</code>,这可能会有所帮助。你知道吗</p>