Maison >développement back-end >Tutoriel Python >Comment comparer efficacement des listes non ordonnées avec différents éléments ?

Comment comparer efficacement des listes non ordonnées avec différents éléments ?

DDD
DDDoriginal
2024-11-28 02:47:10309parcourir

How to Efficiently Compare Unordered Lists with Different Elements?

Comparer des listes non ordonnées avec différents éléments

Comparer deux listes non ordonnées avec des éléments différents peut être difficile, surtout si les éléments sont des objets complexes. Cette question aborde ce problème.

Techniques de comparaison efficaces

La solution fournie décrit trois méthodes pour comparer des listes non ordonnées avec diverses complexités temporelles :

  1. O( n) : L'utilisation de la méthode Counter() convient si les objets sont hachables. Il compte les occurrences de chaque élément et compare les compteurs résultants.
def compare(s, t):
    return Counter(s) == Counter(t)
  1. O(n log n) : La méthode sorted() peut être utilisée si les objets sont commandables. Il trie les deux listes et compare les séquences triées résultantes.
def compare(s, t):
    return sorted(s) == sorted(t)
  1. O(n * n) : Cette approche convient si les objets ne sont ni hachables ni commandable. Il parcourt une liste et vérifie si chaque élément peut être supprimé de l'autre.
def compare(s, t):
    t = list(t)  # make a mutable copy
    try:
        for elem in s:
            t.remove(elem)
    except ValueError:
        return False
    return not t

Le choix de la technique de comparaison appropriée dépend de la nature des objets dans les listes et de la complexité temporelle requise.

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