Maison >développement back-end >Tutoriel Python >Comment puis-je trier efficacement deux listes parallèles en Python tout en maintenant la synchronisation ?
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)))
Cependant, pour les listes plus grandes, une version sur place plus efficace existe :
tups = zip(list1, list2) tups.sort() list1, list2 = zip(*tups)
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]))
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!