Maison >développement back-end >Tutoriel Python >Comment puis-je supprimer efficacement les éléments avec des doublons consécutifs, puis supprimer tous les éléments avec des doublons d'une liste Python ?
Énoncé du problème :
La question tourne autour du développement d'un programme Python qui peut supprimer efficacement les éléments avec des doublons consécutifs d’une liste donnée. L’approche initiale a réussi à éliminer les éléments en double consécutifs, mais elle n’a pas supprimé les éléments contenant des doublons. Le résultat souhaité est une liste qui exclut entièrement les éléments avec des doublons consécutifs.
Solution :
Pour le problème modifié, une solution plus élégante émerge en utilisant le puissant module itertools de Python et la fonction groupby(). Cette itération basée sur les groupes nous permet de traiter la liste élément par élément, en identifiant les doublons consécutifs.
from itertools import groupby L = [1,1,1,1,1,1,2,3,4,4,5,1,2] # Remove elements with consecutive duplicates result = [key for key, _group in groupby(L)] # Output: [1, 2, 3, 4, 5, 1, 2]
Cette technique simplifie la tâche en tirant parti des fonctions intégrées de Python et élimine le besoin d'une logique personnalisée.
Filtrage avancé :
Pour affiner davantage le filtrage et exclure entièrement les éléments contenant des doublons, nous pouvons exploiter la fonction sum() et une expression génératrice :
result = [k for k, g in groupby(L) if sum(1 for i in g) < 2] # Output: [2, 3, 5, 1, 2]
En parcourant chaque groupe et en calculant le nombre d'éléments au sein du groupe, nous pouvons exclure ceux avec plus d'une occurrence.
En conclusion, la fonction groupby() fournit un moyen succinct et efficace pour identifier et supprimer les éléments en double des listes. Sa simplicité et son efficacité en font un outil idéal pour manipuler des données en Python.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!