Maison > développement back-end > Tutoriel Python > Comment puis-je supprimer efficacement les éléments consécutifs en double en Python ?

Comment puis-je supprimer efficacement les éléments consécutifs en double en Python ?

DDD
Libérer: 2024-12-05 17:37:11
original
451 Les gens l'ont consulté

How Can I Efficiently Remove Consecutive Duplicate Elements in Python?

Élimination des éléments consécutifs en double en Python

En Python, la tâche d'élimination des éléments consécutifs en double d'une liste peut être abordée de plusieurs manières. Une approche consiste à parcourir la liste et à supprimer les éléments adjacents ayant la même valeur. Cependant, cette méthode peut devenir lourde lorsqu'il s'agit de longues listes.

Pour des solutions plus efficaces et élégantes, nous pouvons exploiter les fonctions et bibliothèques intégrées de Python. En utilisant itertools.groupby, nous pouvons regrouper les éléments en double consécutifs et manipuler le générateur résultant en conséquence.

Pour éliminer tous les éléments en double consécutifs, nous devons simplement extraire les clés de l'itérateur groupé.

L = [1,1,1,1,1,1,2,3,4,4,5,1,2]
from itertools import groupby
[key for key, _group in groupby(L)]
Copier après la connexion

Sortie :

[1, 2, 3, 4, 5, 1, 2]
Copier après la connexion

Pour la deuxième partie de la question, qui nécessite d'éliminer uniquement les éléments qui ont des doublons consécutifs, nous pouvons filtrer davantage les éléments groupés itérateur basé sur le nombre d’éléments dans chaque groupe. À l'aide d'une expression génératrice, nous pouvons additionner les éléments pour déterminer s'il y a plus d'un élément dans le groupe.

[k for k, g in groupby(L) if sum(1 for i in g) < 2]
Copier après la connexion

Résultat :

[2, 3, 5, 1, 2]
Copier après la connexion

Cette technique est plus pythonique et plus efficace que à la première tentative. Il exploite les fonctions intégrées de Python pour regrouper et filtrer la liste, ce qui donne une solution concise et lisible.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal