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)
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)
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!