擅长:python、mysql、java
<p>显而易见的方法行不通:</p>
<pre><code>list=["asdf","ghjk","qwer","tyui"]
removelist=[1,3]
for index in removelist:
del list[index]
</code></pre>
<p>问题是,删除了“ghjk”之后,之后的所有内容都会向前移动。所以#3不再是“tyui”,它已经超过了列表的末尾。</p>
<hr/>
<p>你可以通过确保向后走来解决这个问题:</p>
<pre><code>list=["asdf","ghjk","qwer","tyui"]
removelist=[1,3]
for index in sorted(removelist, reverse=True):
del list[index]
</code></pre>
<hr/>
<p>不过,通常最好是建立一个新的筛选列表,而不是像Martijn Pieters建议的那样:</p>
<pre><code>list = [v for i, v in enumerate(list) if i not in removelist]
</code></pre>