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))]
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!