Maison >développement back-end >Tutoriel Python >La méthode de déduplication de liste Python que vous devez connaître

La méthode de déduplication de liste Python que vous devez connaître

高洛峰
高洛峰original
2017-02-21 10:50:182299parcourir

Préface

La déduplication de liste est un problème courant lors de l'écriture de scripts Python, car peu importe d'où proviennent les données sources, lorsque nous les convertissons en liste, il peut y avoir être attendu Le résultat n'est pas notre résultat final. La chose la plus courante est qu'il y a des éléments en double dans la liste. À ce stade, la première chose que nous devons faire est la déduplication.

Commençons par la manière la plus simple, en utilisant l'ensemble de types de données intégré à Python.

Supposons que nos données de liste ressemblent à ceci :

level_names = [
 u'Second Level',
 u'Second Level',
 u'Second Level',
 u'First Level',
 u'First Level'
]

Parce que les éléments de l'ensemble ne peuvent pas être répétés , donc lors de la conversion d'une liste en ensemble, les éléments en double seront automatiquement supprimés. C'est le principe de base. Le code est le suivant :

>>> the_list = set(level_names)
>>> print(the_list)
set([u'Second Level', u'First Level'])

. L'inconvénient de cette méthode est que l'ordre de la liste précédent ne peut pas être enregistré lors de la conversion en liste. S'il n'y a pas une telle exigence, cette méthode est la réponse la plus simple. Peut-être que certains amis pensent qu'elle n'a pas de contenu technique. donc dans les questions d'entretien générales Si vous souhaitez supprimer les doublons d'une liste, vous écrirez généralement quelque chose comme ceci :

Veuillez noter la méthode pour supprimer les doublons de la liste (l'ensemble ne peut pas être utilisé)

Veuillez l'écrire. L'ensemble ne peut plus être utilisé, donc cette astuce ne fonctionne parfois toujours pas. Bien sûr, cela ne nous dérange pas.

Nous savons tous que les listes peuvent être parcourues, et le problème devient simple si nous pouvons parcourir. Nous définissons ensuite une liste vide, puis parcourons la liste avec des données et ajoutons un jugement lors du parcours. dans la liste vide, ajoutez Go in, et jetez-le si vous l'avez. Le code est le suivant :

the_list = []
for level in level_names:
 if level not in the_list:
  the_list.append(level)
print(the_list)

Pensez-vous à cette méthode. c'est bien, mais cette méthode peut traiter des petites listes ordinaires. Il n'y a aucun problème avec les listes, mais si vous rencontrez une très grande liste, vous ne pourrez pas faire ce que vous voulez, car la liste dans the_list devient très grande, ce qui affectera l'efficacité lors de la prise de jugement, car la liste est recherchée dans l'ordre d'index lorsque la quantité de données est importante, deviendra plus lente.

Peut-être voulez-vous demander : que dois-je faire si je rencontre une grande liste ? Existe-t-il un moyen plus génial ? Bien sûr, continuons. Puisque l'utilisation de listes lors du jugement affectera l'efficacité, changeons notre façon de penser et utilisons des ensembles. Ensuite, vous voudrez peut-être demander, les ensembles seront-ils plus rapides, car la fonction de hachage utilisée par set lors de la recherche de valeurs ? l'ensemble n'est pas ordonné, la position est fixe. Il suffit d'une seule fois pour vérifier si un élément spécifique existe. Quelqu'un en ligne a effectué une comparaison de recherche d'éléments dans les mêmes conditions de données, l'utilisation de la liste a pris 16 minutes. il faut 52 secondes pour utiliser l'ensemble. Vous pouvez voir l'effet de cette comparaison. Pas grand chose d'autre à dire :

the_list = []
the_set = set()
for level in level_names:
 if level not in the_set:
  the_set.add(level)
  the_list.append(level)
print(the_list)

Plus pour. plus d'articles liés aux méthodes de déduplication de liste Python que vous devriez connaître, veuillez faire attention au site Web PHP 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