Python 2.7 jette ValueError: liste.supprimer(x): x n'est pas dans la liste

Chaque fois que je lance ce programme, j'obtiens cette erreur:

ValueError: list.remove(x): x not in list

Je suis en train d'abaisser la santé d'un seul alien chaque fois qu'il est frappé par un éclair. Que seul étranger devraient également être détruite si sa santé est <= 0. De même, le boulon seraient également détruites. Voici mon code:

def manage_collide(bolts, aliens):
    # Check if a bolt collides with any alien(s)
    for b in bolts:
        for a in aliens:
            if b['rect'].colliderect(a['rect']):
                for a in aliens:
                    a['health'] -= 1
                    bolts.remove(b)
                    if a['health'] == 0:
                        aliens.remove(a)
    # Return bolts, aliens dictionaries
    return bolts, aliens

La ValueError qui se passe sur la ligne aliens.remove(a). Juste pour clarifier, à la fois la aliens et bolts sont des listes de dictionnaires.

Ce que je fais mal?

ValueError sur quelle ligne ?
les étrangers.supprimer(un)
Pour référence future, le problème avec ce code, c'est que j'en boucle sur les étrangers de liste à deux reprises, ce qui provoque certains problèmes lorsque vous essayez de supprimer de la liste. Le retrait de la seconde "pour un dans aliens" permettrait d'éviter ce problème.

OriginalL'auteur Remington Thurber | 2013-01-02