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

Comment puis-je trier une liste tout en conservant l'ordre d'origine d'une liste parallèle en Python ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-10 06:54:14720parcourir

How Can I Sort One List While Maintaining the Original Order of a Parallel List in Python?

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!

Déclaration:
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