Suppression d’éléments d’une liste (tableau) en Python : clear(), pop(), remove(), del

Affaires

Pour supprimer un élément d'une liste (tableau) de type liste en Python, utilisez les méthodes clear(), pop() et remove(). Vous pouvez également spécifier la position et l'étendue de la liste en utilisant index ou slice, puis la supprimer à l'aide de l'instruction del.

Les informations suivantes sont fournies ici.

  • Supprimer tous les éléments:clear()
  • Supprime un élément à la position spécifiée et obtient sa valeur.:pop()
  • Recherche les éléments ayant la valeur spécifiée et supprime le premier élément.:remove()
  • Suppression en spécifiant la position et l'intervalle dans la tranche d'indice:del
  • Supprimez par lots plusieurs éléments qui répondent aux critères.:indication de l'inclusion dans la liste

Notez que les listes peuvent stocker des données de différents types, et sont strictement différentes des tableaux. Utilisez array (bibliothèque standard) ou NumPy lorsque vous souhaitez manipuler des tableaux pour des processus qui nécessitent une taille ou une adresse mémoire, ou pour le calcul numérique de données à grande échelle.

Supprimer tous les éléments: clear()

Dans la méthode de liste clear(), tous les éléments sont supprimés, ce qui donne une liste vide.

l = list(range(10))
print(l)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

l.clear()
print(l)
# []

Supprime un élément à la position spécifiée et obtient sa valeur.: pop()

La méthode pop() d'une liste peut être utilisée pour supprimer un élément à une position spécifiée et obtenir la valeur de cet élément.

Le premier nombre (initial) est 0.

l = list(range(10))
print(l)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

print(l.pop(0))
# 0

print(l)
# [1, 2, 3, 4, 5, 6, 7, 8, 9]

print(l.pop(3))
# 4

print(l)
# [1, 2, 3, 5, 6, 7, 8, 9]

Une valeur négative peut également être utilisée pour spécifier la position à partir de la fin (dernier). La fin (dernier) est -1.

print(l.pop(-2))
# 8

print(l)
# [1, 2, 3, 5, 6, 7, 9]

Si l'argument est omis et qu'aucune position n'est spécifiée, l'élément à la fin (dernier) est supprimé.

print(l.pop())
# 9

print(l)
# [1, 2, 3, 5, 6, 7]

La spécification d'une position inexistante entraînera une erreur.

# print(l.pop(100))
# IndexError: pop index out of range

Notez que pop(0), qui supprime le premier élément, nécessite le coût suivant et n'est pas une opération efficace. Voir la page suivante sur le wiki officiel pour la complexité de calcul de diverses opérations sur les listes.
O(n)

O(1)Le type deque est fourni dans le module collections de la bibliothèque standard comme un type qui supprime les éléments au sommet à ce coût. Par exemple, si vous souhaitez traiter les données comme une file d'attente (FIFO), il est plus efficace d'utiliser deque.

Recherche les éléments ayant la valeur spécifiée et supprime le premier élément.: remove()

La méthode de liste remove() peut être utilisée pour rechercher les éléments ayant la même valeur que celle spécifiée et supprimer le premier élément.

l = ['Alice', 'Bob', 'Charlie', 'Bob', 'Dave']
print(l)
# ['Alice', 'Bob', 'Charlie', 'Bob', 'Dave']

l.remove('Alice')
print(l)
# ['Bob', 'Charlie', 'Bob', 'Dave']

Si la liste contient plus d'un élément qui correspond à la valeur spécifiée, seul le premier sera supprimé.

l.remove('Bob')
print(l)
# ['Charlie', 'Bob', 'Dave']

Si une valeur inexistante est spécifiée, une erreur se produit.

# l.remove('xxx')
# ValueError: list.remove(x): x not in list

Suppression en spécifiant la position et l'intervalle dans la tranche d'indice: del

Vous pouvez également utiliser l'instruction del pour supprimer des éléments de la liste.

Spécifier l'élément à supprimer par son index. Le premier indice (initial) est 0, et le dernier indice (final) est -1.

l = list(range(10))
print(l)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

del l[0]
print(l)
# [1, 2, 3, 4, 5, 6, 7, 8, 9]

del l[-1]
print(l)
# [1, 2, 3, 4, 5, 6, 7, 8]

del l[6]
print(l)
# [1, 2, 3, 4, 5, 6, 8]

Si vous spécifiez une plage avec des tranches, vous pouvez supprimer plusieurs éléments à la fois.

l = list(range(10))
print(l)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

del l[2:5]
print(l)
# [0, 1, 5, 6, 7, 8, 9]

l = list(range(10))
del l[:3]
print(l)
# [3, 4, 5, 6, 7, 8, 9]

l = list(range(10))
del l[4:]
print(l)
# [0, 1, 2, 3]

l = list(range(10))
del l[-3:]
print(l)
# [0, 1, 2, 3, 4, 5, 6]

Il est également possible de spécifier l'ensemble de la plage et de supprimer tous les éléments.

l = list(range(10))
del l[:]
print(l)
# []

[start:stop:step]Si vous spécifiez la plage dans la tranche de cette manière et que vous spécifiez un pas incrémentiel, vous pouvez supprimer plusieurs éléments de saut en même temps.

l = list(range(10))
del l[2:8:2]
print(l)
# [0, 1, 3, 5, 7, 8, 9]

l = list(range(10))
del l[::3]
print(l)
# [1, 2, 4, 5, 7, 8]

Pour plus d'informations sur le découpage en tranches, consultez l'article suivant.

Supprimez par lots plusieurs éléments qui répondent aux critères.: indication de l'inclusion dans la liste

Le processus d'élimination des éléments qui satisfont aux conditions est équivalent au processus d'abandon (extraction) des éléments qui ne satisfont pas aux conditions. La notation de compréhension de liste est utilisée pour ce type de traitement.

Un exemple de suppression d'éléments pairs ou impairs (= laissant des éléments pairs ou impairs) est présenté ci-dessous.
%C'est l'opérateur de reste.
i % 2
C'est le reste de i divisé par 2.

Dans la notation de compréhension de liste, une nouvelle liste est créée. Contrairement aux méthodes de type liste présentées jusqu'à présent, la liste d'origine reste inchangée.

l = list(range(10))
print(l)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

print([i for i in l if i % 2 == 0])
# [0, 2, 4, 6, 8]

print([i for i in l if i % 2 != 0])
# [1, 3, 5, 7, 9]

print(l)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

Autres exemples. Une variété de traitements est possible en fonction de l'expression conditionnelle.

l = ['Alice', 'Bob', 'Charlie', 'Bob', 'David']
print(l)
# ['Alice', 'Bob', 'Charlie', 'Bob', 'David']

print([s for s in l if s != 'Bob'])
# ['Alice', 'Charlie', 'David']

print([s for s in l if s.endswith('e')])
# ['Alice', 'Charlie']

Si vous voulez supprimer les éléments en double, utilisez le type set set.

print(list(set(l)))
# ['David', 'Alice', 'Charlie', 'Bob']