擅长:python、mysql、java
<p>也可以使用<code>filter</code>内置方法来完成,如下所示:</p>
<pre><code>>>> all_words_merged = ['ego', 'femina', 'incenderare', 'tuus', 'casa', 'et', 'cutullus', 'incipere', 'et', 'wingardium', 'leviosa']
>>> class_words_merged = ['femina', 'incenderare', 'incipere', 'wingardium']
>>>
>>> list(filter(lambda x: x not in class_words_merged, all_words_merged))
['ego', 'tuus', 'casa', 'et', 'cutullus', 'et', 'leviosa']
</code></pre>
<p><code>list</code>对于Python3是必需的,因为<code>filter</code>生成一个<em>过滤器对象</em>,而在Python2中,这不是必需的,只是:</p>
<pre><code>>>> filter(lambda x: x not in class_words_merged, all_words_merged)
</code></pre>
<p>编辑:</p>
<p>当然,这不是优化的方法,因为您必须将生成器转换为列表,您可以通过时序配置文件来猜测:</p>
<pre><code>>>> timeit.timeit(stmt='list(filter(lambda x: x not in c, a))', globals={'a':all_words_merged, 'c':class_words_merged})
2.6026250364160717
>>> timeit.timeit(stmt='[x for x in a if x not in c]', globals={'a':all_words_merged, 'c':class_words_merged})
1.3826178676799827
</code></pre>