Conserver les positions d'origine lors du tri d'une liste parallèle
Dans le scénario où vous avez des listes parallèles et souhaitez trier une liste tout en réorganisant l'autre de manière synchronisée, une solution robuste existe. L'utilisation de l'approche « décorer, trier, annuler la décoration » simplifie le processus, en particulier avec la fonction zip intégrée de Python.
La solution Pythonic consiste à créer un objet zip décoré, puis à le trier et enfin à extraire les listes originales. à partir du zip trié. Cette technique préserve les positions d'origine des éléments dans les deux listes.
Par exemple, étant donné les listes :
list1 = [3, 2, 4, 1, 1] list2 = ['three', 'two', 'four', 'one', 'one2']
L'exécution du code suivant :
list1, list2 = zip(*sorted(zip(list1, list2)))
Produira :
list1 = [1, 1, 2, 3, 4] list2 = ['one', 'one2', 'two', 'three', 'four']
Cependant, si les listes sont vides, cette méthode spécifique ne fonctionnera pas correctement. Le modifier légèrement peut résoudre ce problème :
list1, list2 = (list(t) for t in zip(*sorted(zip(list1, list2))))
Python propose une approche alternative de tri sur place, qui, bien que plus verbeuse, peut fournir une légère amélioration des performances pour les listes plus petites :
tups = zip(list1, list2) tups.sort() list1, list2 = zip(*tups)
En résumé, même si plusieurs approches existent pour résoudre ce problème, la méthode zip offre une solution concise et efficace qui maintient les positions originales des éléments tout au long du processus de tri.
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!