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
Libérer: 2024-11-28 02:47:10
original
346 Les gens l'ont consulté

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)
Copier après la connexion
  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)
Copier après la connexion
  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
Copier après la connexion

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!

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal