Suppression d'éléments dans une liste de listes

Résolu/Fermé
Nico78 - Modifié le 16 août 2019 à 14:12
 grigou - 17 août 2019 à 14:03
Bonjour,

Débutant en Python, je bute sur un problème avec Del et Remove pour supprimer des éléments dans une liste en deux dimensions. Voici mon code. Quelqu'un peut-il m'expliquer pourquoi ce code ne supprime que la moitié des éléments de la liste et ce que je devrai faire pour que tous les éléments soient supprimés ?
Merci infiniment,


a = [[2,3],[3,4],[6,1],[8,9],[7,2],[0,4],[6,8]]
print (a)
print ("Suppression")
for i in a:
    a.remove(i)
print (a)

Ce que j'obtiens :

[[2, 3], [3, 4], [6, 1], [8, 9], [7, 2], [0, 4], [6, 8]]
Suppression
[[3, 4], [8, 9], [0, 4]]

2 réponses

KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
16 août 2019 à 14:31
Bonjour,

Le problème c'est que ton programme supprimer le 1er élément, puis le 2è, puis le 3è, etc.
Mais quand tu as supprimé le 1er élément, le 2è est devenu le 1er, le 3è le 2è, etc.
Donc quand tu supprimes le "2è" élément, en réalité c'est le 3è que tu supprimes car il a été décalé.
C'est pour ça que dans le résultat final, tu as toujours le 2è élément (décalé à la 1è place), etc.
Pour corriger le bug il faut bien prendre en compte l'état de la liste au moment où tu fais la suppression, en tenant compte des décalages opérés par les suppressions précédentes.
Une manière simple de faire est de supprimer les éléments en commençant par le dernier.
0