删除由index迭代的python列表中的元素

时间:2015-05-10 19:08:09

标签: python list loops

我有以下代码:

for i in range(len(self.corpses)):
    for j in range(len(self.corpses))[i+1:]:
        if self.corpses[i].collides(self.corpses[j]):
            self.corpses[i] = self.corpses[i] + self.corpses[j]
            self.corpses.remove(self.corpses[j])

但这仍然没有索引。我想知道我在这些条件下删除corpse的方法。

提前致谢。

1 个答案:

答案 0 :(得分:2)

您更改了列表的长度。你可以使用while循环:

i, l = 0, len(self.corpses)
while i < l:
    j = i + 1
    while j < l:
        if self.corpses[i].collides(self.corpses[j]):
            self.corpses[i] = self.corpses[i] + self.corpses[j]
            del self.corpses[j]
            l -= 1
        else:
            j += 1
    i += 1

这样您就可以完全控制所有更改。