擅长:python、mysql、java
<p>对于只想找到两个列表交集的人,Asker提供了两种方法:</p>
<blockquote>
<pre><code>b1 = [1,2,3,4,5,9,11,15]
b2 = [4,5,6,7,8]
b3 = [val for val in b1 if val in b2]
</code></pre>
<p>and</p>
<pre><code>def intersect(a, b):
return list(set(a) & set(b))
print intersect(b1, b2)
</code></pre>
</blockquote>
<p>但是有一种混合方法更有效,因为您只需要在list/set之间进行一次转换,而不是三次转换:</p>
<pre><code>b1 = [1,2,3,4,5]
b2 = [3,4,5,6]
s2 = set(b2)
b3 = [val for val in b1 if val in s2]
</code></pre>
<p>这将在O(n)中运行,而他最初涉及列表理解的方法将在O(n^2)中运行</p>