1839 votes

Comment supprimer un élément d'une liste par index ?

Comment supprimer un élément d'une liste par indice ?

J'ai trouvé list.remove() mais cette méthode parcourt lentement la liste à la recherche d'un élément. par valeur .

14 votes

@smci : La liste Python est basée sur un tableau : pour supprimer un élément au milieu, vous devez déplacer tous les éléments sur la droite pour supprimer le vide ; c'est pourquoi elle est O(n) dans le temps. deque() fournit des opérations efficaces aux deux extrémités mais ne fournit pas d'insertions, de consultations et de suppressions O(1) au milieu.

0 votes

@J.F.Sebastian : implémentation cPython, oui, merci de me corriger. Strictement le spécification linguistique ne spécifie pas comment implémenter la liste, des implémentations alternatives pourraient choisir d'utiliser une liste liée.

0 votes

@smci : aucune implémentation pratique de Python n'utiliserait O(n) accès à l'index a[i] (en raison des listes de liens). Note : l'implémentation basée sur les tableaux fournit O(1) accès à l'index.

7voto

U9-Forward Points 8640

Ou si plusieurs index doivent être supprimés :

print([v for i,v in enumerate(your_list) if i not in list_of_unwanted_indexes])

Bien sûr, on peut aussi le faire :

print([v for i,v in enumerate(your_list) if i != unwanted_index])

1 votes

Pourquoi ne pas simplement trier la liste des indices dans l'ordre inverse, puis les supprimer un par un ? De cette façon, vous n'avez pas besoin de créer une nouvelle liste.

4voto

pyman Points 75

On peut utiliser soit del soit pop, mais je préfère del, car on peut spécifier l'index et les tranches, ce qui donne à l'utilisateur plus de contrôle sur les données.

Par exemple, en partant de la liste présentée, on peut supprimer son dernier élément avec del comme une tranche, puis on peut retirer le dernier élément du résultat en utilisant pop .

>>> l = [1,2,3,4,5]
>>> del l[-1:]
>>> l
[1, 2, 3, 4]
>>> l.pop(-1)
4
>>> l
[1, 2, 3]

4voto

Aashutosh jha Points 188

Vous pouvez utiliser soit del soit pop pour retirer un élément de la liste en fonction de l'index. Pop imprimera le membre qu'il supprime de la liste, tandis que list supprimera ce membre sans l'imprimer.

>>> a=[1,2,3,4,5]
>>> del a[1]
>>> a
[1, 3, 4, 5]
>>> a.pop(1)
 3
>>> a
[1, 4, 5]
>>>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X