Maison > développement back-end > Tutoriel Python > Comment puis-je trier une liste tout en conservant un ordre parallèle dans une autre ?

Comment puis-je trier une liste tout en conservant un ordre parallèle dans une autre ?

Mary-Kate Olsen
Libérer: 2024-12-07 15:03:15
original
136 Les gens l'ont consulté

How Can I Sort One List While Maintaining Parallel Order in Another?

Tri des listes parallèles avec permutation automatique

Énoncé du problème

Étant donné deux listes parallèles de valeurs arbitraires types de données, concevez une méthode pour trier une liste tout en réorganisant simultanément l'autre liste dans le même commander.

Solution

Une approche courante pour résoudre ce problème implique l'idiome « décorer, trier, dédécorer ». Grâce à la fonction zip intégrée de Python, nous pouvons combiner efficacement les éléments des deux listes en tuples et trier ces tuples en fonction des valeurs de la première liste. Cette liste triée de tuples peut ensuite être "non décorée" pour obtenir les listes triées souhaitées.

Mise en œuvre :

list1, list2 = zip(*sorted(zip(list1, list2)))
# Alternatively, for in-place sorting:
# tups = zip(list1, list2)
# tups.sort()
# list1, list2 = zip(*tups)
Copier après la connexion

Avantages et performances

Cette approche privilégie la simplicité et la concision, notamment avec l'utilisation de la fonction zip. Cependant, pour les petites listes, une version sur place peut être légèrement plus rapide :

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

Pour les listes plus grandes, la version sur une ligne pourrait être plus performante dans certaines situations.

Approches alternatives

Comme mentionné dans les commentaires, d'autres approches existent, telles que le tri des indices ou la fourniture d'une fonction clé personnalisée à l'algorithme de tri. Ces alternatives peuvent convenir si la comparaison directe des éléments de la deuxième liste pose problème.

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