<p>如果您的用例允许;您可以使用超高效的<code>set</code>操作:</p>
<pre><code>>>> A = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> B = [2, 4, 6]
>>> A = list(set(A) - set(B))
>>> A
[1, 3, 5, 7, 8, 9, 10]
</code></pre>
<p>请注意,这将不会保持<code>A</code>的相同顺序,并将从中删除所有重复项</p>
<p>一种比较慢</stroke><em>比较快的方法是使用列表理解,这种方法在<code>A</code>中保留重复项并保持其顺序。但是,首先将<code>B</code>转换为<code>set</code>以使<code>in</code>操作尽可能快,这一点至关重要:</p>
<pre><code>>>> A = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> B = [2, 4, 6]
>>> set_b = set(B)
>>> A = [n for n in A if n not in set_b]
[1, 3, 5, 7, 8, 9, 10]
</code></pre>
<p><strong>编辑</strong>:使用<code>set</code>查找的列表理解实际上是一个令人惊讶的更快的解决方案:</p>
<pre><code>$ python3 -m timeit number=1000 setup='import random; A = random.sample(range(10 ** 6), 10 ** 5); B = random.sample(range(10 ** 6), 10 ** 4)' 'list(set(A) - set(B))'
1000 loops, best of 5: 18.7 msec per loop
</code></pre>
<pre><code>$ python3 -m timeit number=1000 setup='import random; A = random.sample(range(10 ** 6), 10 ** 5); B = random.sample(range(10 ** 6), 10 ** 4)' 'set_b = set(B); [n for n in A if n not in set_b]'
1000 loops, best of 5: 11.8 msec per loop
</code></pre>