"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment vérifier si les éléments d’une liste se chevauchent avec une autre en Python ?

Comment vérifier si les éléments d’une liste se chevauchent avec une autre en Python ?

Publié le 2024-11-08
Parcourir:262

How Do I Check if Elements from One List Overlap with Another in Python?

Test du chevauchement de listes en Python

Introduction

En Python, déterminer si des éléments d'une liste existent dans une autre est essentiel pour diverses tâches de manipulation de données. Cet article explore différentes méthodes pour tester ce chevauchement, évaluer leur efficacité et fournir les meilleures pratiques.

Approches

1. Expression génératrice

any(i in a for i in b)

Cette méthode parcourt une liste et vérifie l'appartenance à l'autre, renvoyant True si une correspondance est trouvé. Sa complexité temporelle est O(n), où n est la longueur de la plus grande liste.

2. Set Intersection

bool(set(a) & set(b))

Cette approche convertit les deux listes en ensembles et trouve leur intersection. Si l'intersection n'est pas vide, elle renvoie True. La complexité temporelle dans le pire des cas est O(n m), où n et m sont les longueurs des listes.

3. Intersection d'ensemble hybride

a = set(a)
any(i in a for i in b)

Cette méthode convertit une seule liste en un ensemble et parcourt l'autre, vérifiant l'appartenance à l'ensemble. Il évite la création d'ensembles intermédiaires, ce qui le rend plus rapide que l'intersection d'ensembles traditionnelle.

4. Méthode Isdisjoint

not set(a).isdisjoint(b)

Cette approche utilise la méthode isdisjoint des ensembles gelés pour déterminer s'ils ont des éléments communs. Si ce n’est pas le cas, le résultat est Faux ; sinon, c'est vrai.

Comparaison d'efficacité

Pire des cas :

  • Expression du générateur : O(n)
  • Intersection d'ensemble : O(n m)
  • Intersection d'ensemble hybride : O(n m)
  • Isdisjoint méthode : O(1)

Dans la plupart des cas, la méthode isdisjoint est la plus rapide car elle bénéficie de vérifications d'appartenance à un ensemble de temps constant.

Meilleur cas pour l'expression du générateur :

  • Lorsque les premiers éléments des listes se chevauchent. Dans ce cas, l'expression du générateur peut renvoyer True rapidement.

Facteurs à prendre en compte :

  • Taille de la liste
  • Distribution des éléments dans les listes
  • Fréquence des éléments partagés

Meilleur Pratiques

  • Pour les petites listes (
  • Si les structures de liste sont prévisibles (par exemple, triées), l'expression du générateur peut être plus rapide.
  • Lorsqu'il existe une différence de taille significative entre les listes, utilisez la méthode isdisjoint avec la plus petite liste comme premier argument.
  • Pour les listes avec peu ou pas d'éléments partagés, le La méthode isdisjoint est généralement plus efficace.
Déclaration de sortie Cet article est reproduit le: 1729382599 S'il y a une contrefaçon, veuillez contacter [email protected] pour le supprimer.
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3