我不明白为什么这段代码没有从一个列表中删除“tractic”(元组)【of tuples()】

def _cleanup(self):
    for tactic in self._currentTactics:
        if tactic[0] == "Scouting":
            if tactic[1] in self._estimate.currently_visible:
                self._currentTactics.remove(tactic)
        elif tactic[0] == "Blank":
            self._currentTactics.remove(tactic)
        elif tactic[0] == "Scout":
            self._currentTactics.remove(tactic)

我的IDE(pydev)的屏幕截图和进一步的调试信息可在以下位置获得:
http://imgur.com/a/rPVnl#0
编辑:我注意到了一个bug修复和一个改进。
为了澄清,“空白”正在被删除,“侦察”在必要时被删除,“侦察”战术并没有被删除。

最佳答案

您正在从列表中删除成员,同时正在对其进行迭代。这样做会遗漏列表中的某些元素。您需要对列表的副本进行迭代。
更改:

for tactic in self._currentTactics:

致:
for tactic in self._currentTactics[:]:

07-26 04:03