3

コードのこのセクションがList[oftuples()]から「戦術」(タプル)を削除しない理由がわかりません。

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で入手できます

編集:私が気付いたバグ修正と改善。明確にするために、「空白」は削除され、「スカウト」は必要に応じて削除され、「スカウト」戦術は削除されません。

4

1 に答える 1

3

リストを繰り返し処理しているときに、リストからメンバーを削除します。これを行うことにより、リスト内の特定の要素を見逃すことになります。代わりに、リストのコピーを反復処理する必要があります。

変化する:

for tactic in self._currentTactics:

に:

for tactic in self._currentTactics[:]:
于 2012-04-24T11:31:20.333 に答える