擅长:python、mysql、java
<p>这是因为在迭代列表时要从列表中删除元素:</p>
<pre><code>for i in target_email_list:
if checkmailsyntax(i):
target_email_list.remove(i) # here
</code></pre>
<p>因为,以下值在一起:</p>
^{pr2}$
<p>一旦您删除了<code>pretendemail.com</code>电子邮件,下一个<code>wrongemail.com</code>就会上移,迭代器认为这已经被迭代了。所以接下来的项是<code>right@example.com</code>,并且<code>wrongemail.com</code>永远不会检查有效语法。您可以在检查语法之前添加<code>print(i)</code>,然后自己查看。在</p>
<p>为此,可以使用列表理解:</p>
<pre><code>valid_emails = [email for email in target_email_list if checkmailsyntax(email)]
</code></pre>