擅长:python、mysql、java
<p><strong>您的问题是:</strong></p>
<pre><code>for word in sort2:
if len(word) == maxlist:
sort2.remove(word)
</code></pre>
<p>不要更改当前正在迭代的列表,那样只会把事情搞砸。就像你在读一本书,有人在你读的时候撕掉了书页。你知道吗</p>
<p>迭代副本:</p>
<pre><code>for word in sort2[:]:
if len(word) == maxlist:
sort2.remove(word)
</code></pre>
<p>请注意添加的<code>[:]</code>,它将为您提供一个副本。你知道吗</p>
<hr/>
<p>以及一个替代解决方案:</p>
<pre><code>[next(g) for _, g in groupby(sorted(words, key=len), len)][-3]
</code></pre>
<p>演示:</p>
<pre><code>>>> words = 'This is a test and I try hard to make it good'.split()
>>> from itertools import groupby
>>> [next(g) for _, g in groupby(sorted(words, key=len), len)][-3]
'is'
</code></pre>