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
Libérer: 2024-12-10 06:54:14
original
722 Les gens l'ont consulté

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']
Copier après la connexion

L'exécution du code suivant :

list1, list2 = zip(*sorted(zip(list1, list2)))
Copier après la connexion

Produira :

list1 = [1, 1, 2, 3, 4]
list2 = ['one', 'one2', 'two', 'three', 'four']
Copier après la connexion

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))))
Copier après la connexion

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)
Copier après la connexion

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!

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