Python List pop()

Ce tutoriel vous montre tout ce que vous devez savoir pour vous aider à maîtriser l’essentielle méthode pop() du type de données conteneur le plus fondamental du langage de programmation Python.

Définition et utilisation :

La méthode list.pop() supprime et renvoie le dernier élément d’un list existant. La méthode list.pop(index) avec l’argument facultatif index supprime et renvoie l’élément à la position index.

Voici un petit exemple:

>>> lst = >>> lst.pop()3>>> lst

Dans la première ligne de l’exemple, vous créez la liste lst. Vous supprimez ensuite et retournez le dernier élément 3 de la liste. Le résultat est la liste avec seulement deux éléments .

Code Puzzle – Essayez vous-même:

Maintenant vous connaissez les bases. Approfondissons votre compréhension avec un petit puzzle de code – pouvez-vous le résoudre ?

Vous pouvez également résoudre ce puzzle et suivre vos compétences en Python sur notre application interactive Finxter.

Syntaxe:

Vous pouvez appeler cette méthode sur chaque objet liste en Python. Voici la syntaxe:

list.pop(index=-1)

Arguments :

.

Argument Description
index Argument facultatif. Vous pouvez définir l’index de l’élément à retirer et à retourner. L’argument par défaut conduit à la suppression du dernier élément de la liste avec l’indice -1.

Valeur de retour :

La méthode list.pop() a pour valeur de retour Object. Elle supprime l’élément particulier de la liste (par défaut : le dernier élément) et le renvoie directement à l’appelant.

Vidéo:

  • Le guide ultime des listes Python

Voici votre antisèche PDF gratuite vous montrant toutes les méthodes de liste Python sur une simple page. Cliquez sur l’image pour télécharger le fichier PDF haute résolution, l’imprimer et l’afficher sur le mur de votre bureau :

Table des matières

Liste Python pop() par index.

Vous pouvez utiliser la méthode list.pop(index) avec l’argument optionnel index pour retirer et retourner l’élément à la position index de la liste.

Voici un exemple :

>>> customers = >>> customers.pop(2)'Ann'>>> customers>>> customers.pop(0)'Alice'>>> customers

Après avoir créé la liste avec quatre éléments, vous retirez et retournez d’abord le deuxième élément 'Ann'. Ensuite, vous retirez et retournez le premier élément 'Alice'. La liste résultante n’a plus que deux éléments.

Python List pop() First / Front / Left / Head

La méthode list.pop(index) à avec l’argument optionnel index pour retirer et retourner l’élément à la position index de la liste. Ainsi, si vous voulez supprimer le premier élément de la liste, il suffit de définir index=0 en appelant list.pop(0). Cela fera sauter le premier élément de la liste.

Voici un exemple:

>>> primes = >>> primes.pop(0)1>>> primes

La méthode pop(0) supprime le premier élément 1 de la liste des nombres premiers donnée en exemple.

La liste Python pop() par valeur

Dans les deux exemples précédents, vous avez vu comment pop des éléments par indice. Mais pouvez-vous également pop par valeur ?

Oui, vous le pouvez en utilisant la méthode list.index(value) qui vous donne l’indice de la valeur de l’élément dans la liste. Maintenant, vous pouvez utiliser la méthode list.pop(index) sur cet index pour retirer la valeur de la liste et obtenir le résultat comme valeur de retour.

Voici un exemple où vous voulez faire sortir l’élément 7 de la liste et stocker le résultat dans la variable some_prime.

>>> primes = >>> some_prime = primes.pop(primes.index(7))>>> some_prime7

Si la valeur de retour ne vous intéresse pas mais que vous voulez seulement supprimer la première occurrence de la valeur x dans la list, utilisez la méthode list.remove(x).

Article connexe:

  • Python List remove()

Python List pop() Multiple Elements

Si vous pouvez pop un élément d’une liste Python, la question naturelle est de savoir si vous pouvez également pop plusieurs éléments en même temps ?

La réponse est non. Vous ne pouvez pas directement extraire plusieurs éléments d’une liste. Mais vous pouvez le faire indirectement avec une simple instruction de compréhension de liste.

Python List pop() First n Elements

Disons que vous voulez pop les n premiers éléments d’une liste. Comment faire ?

Vous créez simplement une liste de valeurs en utilisant la compréhension de liste pour retirer et retourner les premiers n éléments de la liste.

Voici un autre exemple :

>>> lst = >>> popped = >>> popped>>> lst

La liste éclatée contient les cinq premiers éléments. La liste originale n’a plus qu’un seul élément.

Python List pop() Last n Elements

Disons que vous voulez faire sauter les n derniers éléments d’une liste. Comment faire ?

Vous créez simplement une liste de valeurs en utilisant la compréhension de liste pour retirer et retourner les derniers n éléments de la liste.

Voici un autre exemple :

>>> lst = >>> >>> lst

La liste éclatée contient les cinq derniers éléments. La liste originale n’a plus qu’un seul élément.

Complexité temporelle de Python List pop()

La complexité temporelle de la méthode pop() est constante O(1). Quel que soit le nombre d’éléments dans la liste, popper un élément d’une liste prend le même temps (plus moins des facteurs constants).

La raison est que les listes sont implémentées avec des tableaux dans cPython. Récupérer un élément d’un tableau a une complexité constante. Retirer l’élément du tableau a également une complexité constante. Ainsi, la récupération et le retrait de l’élément comme fait par la méthode pop() a une complexité d’exécution constante aussi.

J’ai écrit un court script pour évaluer la complexité d’exécution de la méthode pop() en Python:

import matplotlib.pyplot as pltimport timey = for i in : lst = list(range(i)) t0 = time.time() x = lst.pop(0) t1 = time.time() y.append(t1-t0)plt.plot(y)plt.xlabel("List elements (10**5)")plt.ylabel("Time (sec)")plt.show()

Le graphique résultant montre que la complexité d’exécution est linéaire, même si le nombre d’éléments augmente drastiquement :

Complexité d'exécution Python pop()

(D’accord, il y a quelques bosses mais qui s’en soucie vraiment ?)

Notez que la complexité d’exécution est toujours linéaire si nous popons le dernier élément ou tout autre élément arbitraire de la liste.

Python List pop() vs remove()

Quelle est la différence entre la liste.pop() et la méthode list.remove() ?

  • La méthode list.remove(element) supprime la première occurrence de la element d’une list existante. Elle ne supprime cependant pas toutes les occurrences de l’élément dans la liste !
  • La méthode list.pop() supprime et renvoie le dernier élément d’une list existante. La méthode list.pop(index) avec l’argument facultatif index supprime et retourne l’élément à la position index.

Donc, la méthode remove supprime par valeur et la méthode pop supprime par indice. De plus, la méthode remove ne renvoie rien (elle opère sur la liste elle-même) et la méthode pop renvoie l’objet supprimé.

Python List Pop and Push (Stack)

Python n’a pas de structure de données de pile intégrée car elle n’est pas nécessaire. Vous pouvez simplement créer une liste vide et l’appeler stack. Ensuite, vous utilisez la méthode stack.append(x) pour pousser l’élément x sur la pile. Et vous suivez la méthode stack.pop() pour pousser l’élément le plus haut de la pile.

Voici un exemple qui montre comment pousser trois valeurs dans la pile et ensuite les retirer dans l’ordre traditionnel First-In Last-Out (FILO) des piles.

>>> stack = >>> stack.append(5)>>> stack.append(42)>>> stack.append("Ann")>>> stack.pop()'Ann'>>> stack.pop()42>>> stack.pop()5>>> stack

Python List pop() Without Remove

Vous voulez pop() un élément d’une liste donnée sans le supprimer ? Ne le faites pas ! Utilisez plutôt une simple indexation. Pour obtenir un élément d’index i à partir de list, il suffit d’utiliser le schéma d’indexation list. Cela permettra de conserver l’élément d’origine dans la liste sans le supprimer.

Python List pop() If Not Empty

Comment pouvez-vous pop() un élément uniquement si la liste n’est pas vide en une seule ligne de code ? Utilisez l’opérateur ternaire en Python lst.pop() if lst else None comme suit:

>>> lst = >>> for i in range(5):print(lst.pop() if lst else None)321NoneNone

Vous essayez de pop l’élément le plus à gauche cinq fois à partir d’une liste avec seulement trois valeurs. Cependant, il n’y a pas de message d’erreur grâce à votre utilisation compétente de l’opérateur ternaire qui vérifie en une seule ligne si la liste est vide. Si elle est vide, elle ne saute pas mais renvoie la valeur None.

Si vous n’utilisez pas l’opérateur ternaire dans cet exemple, Python lancera un IndexError lorsque vous tenterez de faire un pop à partir d’une liste vide :

>>> lst = >>> for i in range(5):print(lst.pop())321Traceback (most recent call last): File "<pyshell#15>", line 2, in <module> print(lst.pop())IndexError: pop from empty list

La liste Python pop() Slice

Peut-on faire un pop sur toute une tranche à la fois ? Eh bien, vous pouvez supprimer une tranche entière en utilisant le mot-clé del : pour supprimer la tranche lst de la liste, vous pouvez appeler del lst. Cependant, vous n’obtiendrez pas la tranche comme valeur de retour, donc vous pouvez vouloir stocker la tranche dans une variable séparée d’abord, avant de la supprimer de la liste.

Python List pop() While Iterating

Il est toujours dangereux de modifier une liste sur laquelle vous itérez actuellement.

Pourquoi ? Parce que l’itérateur n’est créé qu’une seule fois dans la définition de la boucle et qu’il s’entêtera à vous donner les indices qu’il a préparés au départ. Si la boucle change, les indices des éléments changent aussi. Mais l’itérateur n’adapte pas les indices pour tenir compte de ces changements. Voici un exemple :

>>> lst = list(range(10))>>> for i in range(len(lst)):lst.pop(i)02468Traceback (most recent call last): File "<pyshell#20>", line 2, in <module> lst.pop(i)IndexError: pop index out of range

Ouah, c’était inattendu, n’est-ce pas ? Vous avez poppé seulement un élément sur deux de la liste. Pourquoi ? Parce que dans la première itération, la variable d’index i=0. Maintenant, nous supprimons cet élément de la liste. L’élément 1 de la liste a maintenant l’indice 0 après la suppression de l’élément de tête précédent. Mais dans la deuxième itération de la boucle, la variable de la boucle a l’index i=1. C’est l’élément suivant à enlever. Mais vous avez sauté l’élément 1 de la liste à l’indice de position 0 ! Seul un élément sur deux est poppé en conséquence.

Autres façons de supprimer des éléments d’une liste

Il existe d’autres façons de supprimer des éléments de la liste. Voir le tableau récapitulatif :

.

.

Méthode Description
lst.remove(x) Supprimer un élément de la liste (par valeur)
lst.pop() Supprimer un élément de la liste (par indice) et retourner l’élément
lst.clear() Supprimer tous les éléments de la liste
del lst Supprimer un ou plusieurs éléments de la liste (par indice ou par tranche)
Compréhension de la liste Supprimer tous les éléments qui répondent à une certaine condition

A la suite, vous allez plonger dans chacune de ces méthodes pour acquérir une compréhension approfondie.

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

Pour supprimer un élément de la liste, utilisez la méthode list.remove(element) que vous avez déjà vue précédemment :

>>> lst = >>> lst.remove("Ann")>>> lst

Essayez vous-même :

La méthode va de gauche à droite et supprime la première occurrence de l’élément qui est égal à celui à supprimer.

L’élément supprimé n’existe pas

Si vous essayez de supprimer l’élément x de la liste mais que x n’existe pas dans la liste, Python lance une erreur de valeur :

>>> lst = >>> lst.remove('Frank')Traceback (most recent call last): File "<pyshell#19>", line 1, in <module> lst.remove('Frank')ValueError: list.remove(x): x not in list

pop() – Suppression d’un élément par index

Par défaut, la méthode pop() supprime le dernier élément de la liste et retourne l’élément.

>>> lst = >>> lst.pop()'Ann'>>> lst

Mais vous pouvez également définir l’argument optionnel index. Dans ce cas, vous supprimerez l’élément à l’indice donné – un secret Python peu connu !

>>> lst = >>> lst.pop(1)'Bob'>>> lst

clear() – Supprimer tous les éléments

La méthode clear() supprime simplement tous les éléments d’un objet liste donné.

>>> lst = >>> lst.clear()>>> lst

Del – Suppression des éléments par index ou tranche

Cette astuce est également relativement peu connue des débutants en Python :

  • Utiliser del lst pour supprimer l’élément à l’index.
  • Utiliser del lst pour supprimer tous les éléments dans la tranche.
>>> lst = list(range(10))>>> lst>>> del lst>>> lst>>> del lst>>> lst

Articles de blog associés:

  • Voyez mon tutoriel complet sur la tranche qui fait de vous un maître de la tranche en 15 minutes environ !

Compréhension de liste – Supprimer des éléments de manière conditionnelle

Ok, c’est un peu de la triche parce que cette méthode ne supprime pas vraiment les éléments d’un objet liste. Elle crée simplement une nouvelle liste avec certains éléments qui répondent à votre condition.

La compréhension de liste est un moyen compact de créer des listes. La formule simple est .

  • Expression : Que faire avec chaque élément de liste ?
  • Contexte : Quels éléments de liste sélectionner ? Elle consiste en un nombre arbitraire d’instructions for et if.

L’exemple crée la liste .

Vous pouvez également définir une condition telle que toutes les valeurs impaires x%2==1 dans la partie contexte en utilisant une condition if. Cela nous conduit à un moyen de supprimer tous les éléments qui ne remplissent pas une certaine condition dans une liste donnée.

>>> lst = list(range(10))>>> lst_new = >>> lst_new 

Alors que vous itérez sur toute la liste lst, la condition x%2 exige que les éléments soient impairs.

Articles de blog connexes:

  • Voyez mon tutoriel complet sur la compréhension des listes pour un apprentissage maximal!

Python List pop() Thread Safe

Avez-vous plusieurs threads qui accèdent à votre liste en même temps ? Alors vous devez être sûr que les opérations sur la liste (comme pop()) sont réellement thread safe.

En d’autres termes : pouvez-vous appeler l’opération pop() dans deux threads sur la même liste en même temps ? (Et pouvez-vous être sûr que le résultat est significatif ?)

La réponse est oui (si vous utilisez l’implémentation cPython). La raison en est le verrouillage global de l’interpréteur de Python qui garantit qu’un thread qui travaille actuellement sur son code terminera d’abord son opération Python de base actuelle telle que définie par l’implémentation cPython. Ce n’est que s’il termine cette opération que le prochain thread pourra accéder à la ressource de calcul. Ceci est assuré avec un schéma de verrouillage sophistiqué par l’implémentation cPython.

La seule chose que vous devez savoir est que chaque opération de base dans l’implémentation cPython est atomique. Elle est exécutée entièrement et en une seule fois avant qu’un autre thread ait la chance de s’exécuter sur le même moteur virtuel. Par conséquent, il n’y a pas de conditions de course. Un exemple pour une telle race condition serait le suivant : le premier thread lit une valeur de la liste, le second thread écrase la valeur, et le premier thread écrase à nouveau la valeur invalidant l’opération du second thread.

Toutes les opérations cPython sont thread-safe. Mais si vous combinez ces opérations dans des fonctions de plus haut niveau, celles-ci ne sont généralement pas thread-safe car elles consistent en de nombreuses opérations (éventuellement imbriquées).

Où aller maintenant ?

La méthode list.remove(element) supprime la première occurrence de element de list.

Vous avez appris les tenants et aboutissants de cette importante méthode de liste Python.

Si vous continuez à vous battre avec ces commandes Python de base et que vous vous sentez bloqué dans votre progression d’apprentissage, j’ai quelque chose pour vous : Python One-Liners (lien Amazon).

Dans ce livre, je vous donnerai un aperçu complet des sujets informatiques critiques tels que l’apprentissage automatique, les expressions régulières, la science des données, NumPy et les bases de Python – le tout en une seule ligne de code Python !

Obtenez le livre sur Amazon !

DESCRIPTION OFFICIELLE DU LIVRE : Python One-Liners montrera aux lecteurs comment effectuer des tâches utiles avec une ligne de code Python. Après une brève remise à niveau sur Python, le livre aborde des sujets avancés essentiels tels que le découpage, la compréhension des listes, la diffusion, les fonctions lambda, les algorithmes, les expressions régulières, les réseaux neuronaux, la régression logistique et bien plus encore. Chacune des 50 sections du livre introduit un problème à résoudre, accompagne le lecteur à travers les compétences nécessaires pour résoudre ce problème, puis fournit une solution Python concise en une ligne avec une explication détaillée.

Alors qu’il travaillait comme chercheur dans les systèmes distribués, le Dr Christian Mayer a découvert sa passion pour l’enseignement de l’informatique aux étudiants.

Pour aider les étudiants à atteindre des niveaux supérieurs de réussite en Python, il a fondé le site Web d’éducation à la programmation Finxter.com. Il est l’auteur du populaire livre de programmation Python One-Liners (NoStarch 2020), coauteur de la série de livres autoédités Coffee Break Python, passionné d’informatique, pigiste et propriétaire de l’un des 10 plus grands blogs Python au monde.

Ses passions sont l’écriture, la lecture et le codage. Mais sa plus grande passion est de servir les aspirants codeurs à travers Finxter et de les aider à booster leurs compétences. Vous pouvez rejoindre son académie gratuite par e-mail ici.

.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *