Maison >développement back-end >Tutoriel Python >Comment supprimer efficacement les doublons d'une liste Python tout en maintenant l'ordre ?

Comment supprimer efficacement les doublons d'une liste Python tout en maintenant l'ordre ?

DDD
DDDoriginal
2024-12-20 12:42:19535parcourir

How to Efficiently Remove Duplicates from a Python List While Maintaining Order?

Suppression des doublons dans les listes

En Python, rechercher les doublons dans une liste et renvoyer une nouvelle liste sans eux est une tâche courante. Il existe plusieurs approches pour y parvenir.

Utilisation d'ensembles

Les ensembles sont des collections non ordonnées d'objets distincts. Ils constituent un moyen efficace de supprimer les doublons. Pour créer un ensemble à partir d’une liste, transmettez-le simplement à la fonction set(). Pour le reconvertir en liste, utilisez la fonction list(). Cette méthode ne préserve cependant pas l'ordre d'origine des éléments.

t = [1, 2, 3, 1, 2, 3, 5, 6, 7, 8]
list(set(t))  # [1, 2, 3, 5, 6, 7, 8]

Maintien de l'ordre

Si la préservation de l'ordre d'origine est cruciale, les collections.OrderedDict module peut être utilisé. OrderedDict conserve l'ordre d'insertion des éléments. Convertissez la liste en OrderedDict, puis revenez en liste pour préserver l'ordre.

from collections import OrderedDict
list(OrderedDict.fromkeys(t))  # [1, 2, 3, 5, 6, 7, 8]

Utilisation de dictionnaires dans Python 3.7

Dans Python 3.7 et versions ultérieures, des dictionnaires standards gère également l’ordre d’insertion. Ainsi, vous pouvez utiliser l'approche suivante :

list(dict.fromkeys(t))  # [1, 2, 3, 5, 6, 7, 8]

Considérations

Notez que toutes ces méthodes nécessitent que les éléments de la liste soient hachables (c'est-à-dire immuables) . Si les éléments ne peuvent pas être hachés (par exemple, des listes), une approche plus lente impliquant des comparaisons de boucles imbriquées est nécessaire.

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!

Déclaration:
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