Skip to content

Supprimer un élément d’une liste en Python (clear, pop, remove, del)

En Python, utilisez les méthodes de liste clear(), pop() et remove() pour supprimer des éléments (éléments) d’une liste. Il est également possible de supprimer des éléments à l’aide de l’instruction en précisant une position ou une plage avec un index ou une tranche.

  • Supprimer tous les éléments :clear()
  • Supprimer un élément par index et obtenir sa valeur :pop()
  • Supprimer un élément par valeur :remove()
  • Supprimez les éléments par index ou tranche :del
  • Supprimer les éléments qui répondent à la condition : Lister les compréhensions

Consultez l’article suivant pour ajouter des éléments à la liste.

Supprimer tous les éléments :clear()

Vous pouvez supprimer tous les éléments de la liste avec clear().

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

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

Supprimer un élément par index et obtenir sa valeur :pop()

Vous pouvez supprimer l’élément à la position souhaitée et obtenir sa valeur avec pop().

L’index au début est 0 (indexation de base zéro).

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]

Vous pouvez utiliser des valeurs négatives pour spécifier la position à partir de la fin. L’indice à la fin est -1.

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

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

Si l’argument est omis, le dernier élément est supprimé.

print(l.pop())
# 9

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

La spécification d’un index inexistant a généré une erreur.

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

Notez que pop(0), qui supprime le premier élément, est une opération O(n) et inefficace. Voir le wiki officiel pour la complexité de calcul des diverses opérations sur la liste.

Le type deque est fourni dans le module standard des collections de bibliothèques pour supprimer le premier élément avec O(1). Par exemple, si vous souhaitez traiter les données comme un fichier d’attente (FIFO), il est plus efficace d’utiliser deque.

Supprimer un élément par valeur :remove()

Vous pouvez supprimer le premier élément de la liste lorsque sa valeur est égale à la valeur sélectionnée avec remove().

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 en plusieurs correspondants à la valeur désignée, seul le premier est supprimé.

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

La spécification d’une valeur inexistante a généré une erreur.

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

Supprimez les éléments par index ou tranche :del

clear(), pop() et remove() sont des méthodes de list. Vous pouvez également supprimer des éléments d’une liste avec des instructions del.

Spécifiez l’élément à supprimer par index. Le premier indice est 0 et le dernier 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]

Vous pouvez supprimer plusieurs éléments avec slice.

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 supprimer tous les éléments en spécifiant toute la plage.

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

Vous pouvez également spécifier l’étape comme [start:stop:step].

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]

Consultez l’article suivant pour plus de détails sur les tranches.

Supprimer les éléments qui répondent à la condition : Lister les compréhensions

Supprimer les éléments qui satisfont la condition équivaut à extraire les éléments qui ne satisfont pas la condition.

Pour cela, des compréhensions de liste sont utilisées.

Un exemple de suppression d’éléments pairs ou impairs (= conserver les éléments pairs ou impairs) est le suivant. % Est l’opérateur de reste, et i % 2 est le reste de la division de i par 2.

En compréhension de liste, une nouvelle liste est produite. Contrairement à la méthode de type de liste ou à l’instruction de l’invention jusqu’à présent, la liste d’origine n’est pas modifié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]

Consultez l’article suivant pour plus de détails sur l’extraction d’éléments à l’aide des compréhensions de liste.

D’autres exemples sont les suivants.

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']

Consultez l’article suivant pour obtenir des exemples de liste de chaînes.

Si vous sélectionnez alors les éléments en double, utilisez set().

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