Maison > développement back-end > Tutoriel Python > Comment puis-je rechercher et supprimer efficacement les éléments en double d'une liste Python ?

Comment puis-je rechercher et supprimer efficacement les éléments en double d'une liste Python ?

Barbara Streisand
Libérer: 2024-12-17 13:11:25
original
481 Les gens l'ont consulté

How Can I Efficiently Find and Remove Duplicate Elements from a Python List?

Recherche des doublons dans les listes

En Python, la recherche des doublons dans une liste peut être réalisée de plusieurs manières, en fonction des exigences spécifiques .

Utiliser des ensembles

Les ensembles en Python sont collections non ordonnées qui éliminent automatiquement les éléments en double. Pour supprimer les doublons d'une liste et créer une nouvelle liste avec l'ordre d'origine, utilisez simplement l'expression set(a).

Obtenir la liste des doublons

Si vous Si vous avez besoin d'une liste des éléments en double, vous pouvez utiliser un dictionnaire pour compter les occurrences de chaque élément dans la liste d'origine. Les éléments dont le nombre est supérieur à un sont considérés comme des doublons. Le code suivant illustre cette approche :

a = [1,2,3,2,1,5,6,5,5,5]

import collections
print([item for item, count in collections.Counter(a).items() if count > 1])

# Output: [1, 2, 5]
Copier après la connexion

Utilisation de Set Intersection

Une autre méthode pour rechercher des doublons consiste à créer un ensemble d'éléments uniques à partir de la liste d'origine à l'aide de set (un). Ensuite, vous pouvez trouver les doublons en croisant cet ensemble avec la liste d'origine.

Exemple avec des éléments non hachables

Si les éléments de votre liste ne sont pas hachables ( par exemple, des listes ou des dictionnaires), vous pouvez utiliser une approche par force brute en parcourant toutes les paires d'éléments et en les comparant pour égalité.

Exemple de code :

a = [[1], [2], [3], [1], [5], [3]]

no_dupes = [x for n, x in enumerate(a) if x not in a[:n]]
print(no_dupes)  # [[1], [2], [3], [5]]

dupes = [x for n, x in enumerate(a) if x in a[:n]]
print(dupes)  # [[1], [3]]
Copier après la connexion

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal