擅长:python、mysql、java
<ul>
<li><p>打开文件通常用<code>with</code></p></li>
<li><p>从文件中读取时,新行字符不会被删除;因此,例如,<code>'two\n' != 'two'</code>并且比较测试失败。使用.strip()或.rstrip()删除空格,包括后面的换行符</p></li>
<li><p><code>for index in range(len(mylist))</code>通常是一个不好的符号;最好将列表作为<code>for value in mylist</code>操作,并将其过滤为<code>[value for value in mylist if test(value)]</code></p></li>
<li><p>您的第一个<code>print</code>语句缩进错误</p></li>
<li><p>您的<code>remove</code>语法是错误的;应该是<code>twolist.remove(x)</code>,请注意,这只会删除x的<em>第一个</em>出现</li>
<li><p>您的算法是O(mn),其中m是<code>baselist</code>中的行数,n是<code>twolist</code>中的行数;稍微小心,它可以是O(m+n)。</p></li>
</ul>
<p>如果原始顺序很重要</p>
<pre><code>with open('testfile.txt') as inf:
twoset = set(twolist).difference(line.strip() for line in inf)
twolist = [item for item in twolist if item in twoset]
</code></pre>
<p>否则</p>
^{pr2}$