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

Comment puis-je supprimer efficacement les doublons d'une liste tout en préservant l'ordre en Python ?

Barbara Streisand
Libérer: 2024-12-31 05:50:13
original
722 Les gens l'ont consulté

How Can I Efficiently Remove Duplicates from a List While Preserving Order in Python?

Préserver l'ordre tout en supprimant les doublons d'une liste

Supprimer des éléments en double d'une liste tout en conservant l'ordre d'origine peut être un défi, car l'utilisation un ensemble pour éliminer les doublons perturbe généralement la séquence initiale.

Pour résoudre ce problème, la communauté Python a développé divers éléments intégrés et solutions idiomatiques. L'une des options les plus efficaces est une fonction connue sous le nom de f7, qui exploite un ensemble pour détecter et supprimer efficacement les doublons :

def f7(seq):
    seen = set()
    seen_add = seen.add
    return [x for x in seq if not (x in seen or seen_add(x))]
Copier après la connexion

Cette fonction utilise un ensemble nommé vu pour identifier et supprimer rapidement les doublons. L'optimisation secrète réside dans l'attribution de saw.add à saw_add en tant que variable locale. Cela empêche Python de résoudre dynamiquement vu.add à chaque itération, ce qui peut entraîner une dégradation des performances en raison du potentiel de changement de vu.add.

D'autres alternatives, telles que la structure de données d'ensemble ordonné d'ActiveState, sont également disponible si vous prévoyez d'effectuer des opérations fréquentes de suppression des doublons sur le même ensemble de données.

Il est impératif de noter que dans le code fourni, saw.add() renvoie systématiquement None, ce qui nécessite le utilisation de l'opérateur logique ou comme méthode pour déclencher une mise à jour d'ensemble.

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