Maison > développement back-end > Tutoriel Python > Comment puis-je trier efficacement deux listes parallèles en Python tout en maintenant la synchronisation ?

Comment puis-je trier efficacement deux listes parallèles en Python tout en maintenant la synchronisation ?

Barbara Streisand
Libérer: 2024-12-11 14:49:12
original
460 Les gens l'ont consulté

How Can I Efficiently Sort Two Parallel Lists in Python While Maintaining Synchronization?

Tri des listes avec permutation de la liste parallèle

Étant donné deux listes parallèles, l'une peut être triée tout en réorganisant l'autre de manière synchronisée. Ceci est réalisé en triant la première liste et en utilisant les indices des éléments réorganisés pour réorganiser la deuxième liste.

Une approche courante est l'idiome « décorer, trier, annuler la décoration », qui compresse les deux listes, les trie en fonction de la première liste, puis décompresse le résultat. En utilisant la fonction zip de Python, cela peut être implémenté de manière concise comme suit :

list1, list2 = zip(*sorted(zip(list1, list2)))
Copier après la connexion

Cependant, pour les listes plus grandes, une version sur place plus efficace existe :

tups = zip(list1, list2)
tups.sort()
list1, list2 = zip(*tups)
Copier après la connexion

Pour les listes contenant non -des éléments comparables, des indices de tri utilisant des fonctions lambda peuvent être utilisés. Alternativement, une fonction clé peut être fournie au tri pour éviter de comparer les éléments de la deuxième liste :

result1, result2 = zip(*sorted(zip(list1, list2), key=lambda x: x[0]))
Copier après la connexion

Les entrées vides doivent être traitées séparément, et il faut être conscient que la version en place peut être légèrement plus rapide , surtout pour les petites listes.

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