Forum Python

Please or S’enregistrer to create posts and topics.

Impossible de supprimer un élément dans une boucle

Bonjour,
Je cherche à supprimer les nombres pairs d'une liste en utilisant une boucle for, mais ça ne fonctionne pas comme prévu :
ma_liste = [1, 2, 6, 3, 4, 5, 4]
for i in ma_liste:
if i % 2 == 0:
ma_liste.remove(i)
print(ma_liste)

Je m'attendais à ce que la liste finale soit [1, 3, 5], mais j'obtiens [1, 6, 3, 5]. Pourtant, le code semble correct. Une idée du problème ?

Lorsque vous modifiez une liste tout en la parcourant, cela perturbe l'itération, car les indices sont recalculés après chaque suppression.
Solution : utilisez une liste de compréhension pour générer une nouvelle liste sans les éléments pairs :ma_liste = [1, 2, 3, 4, 5]

ma_liste = [x for x in ma_liste if x % 2 != 0]
print(ma_liste)