擅长:python、mysql、java
<p>原因是您在遍历列表时正在修改它-不应该这样做。
我将在这里分享@AlexMartelli在<a href="https://stackoverflow.com/a/1637875/222529">one of his answers</a>中给出的建议:</p>
<blockquote>
<p>Never alter the container you're looping on, because iterators on that container are not going to be informed of your alterations and, as you've noticed, that's quite likely to produce a very different loop and/or an incorrect one.</p>
</blockquote>
<p>这里有一个替代解决方案(也使用snake_case),使用集合-假设可用字母和猜测字母都不包含重复的字母(除非错误):</p>
<pre><code>all_letters = set('abcdefghijklmnopqrstuvwxyz')
def get_available_letters(letters_guessed):
available_letters = all_letters - set(letters_guessed)
return ''.join([str(letter) for letter in available_letters])
</code></pre>
<p>这里有一个警告,上面的解决方案可能不遵守您指定字母的顺序</p>
<p>如果您仍想坚持列表,请分两个阶段进行:</p>
<pre><code>all_letters = list('abcdefghijklmnopqrstuvwxyz')
def get_available_letters(letters_guessed):
available_letters = [letter for letter in all_letters if letter not in letters_guessed]
return ''.join([str(letter) for letter in available_letters])
</code></pre>