Maison > développement back-end > Tutoriel Python > Comment puis-je trier plusieurs listes en Python tout en conservant l'alignement ?

Comment puis-je trier plusieurs listes en Python tout en conservant l'alignement ?

Susan Sarandon
Libérer: 2024-12-28 17:10:17
original
634 Les gens l'ont consulté

How Can I Sort Multiple Lists in Python While Maintaining Alignment?

Tri des listes tout en préservant l'alignement

Lorsque vous travaillez avec plusieurs listes parallèles, il peut être nécessaire de trier une liste tout en conservant l'ordre correspondant des éléments dans les autres listes. Pour y parvenir, nous présentons deux approches classiques.

L'idiome "Décorer, Trier, Dédécorer"

Cette technique simplifie la tâche grâce à la fonction zip intégrée de Python, qui combine des éléments de plusieurs listes en tuples :

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

Après avoir trié les tuples par le premier élément (liste1), l'ordre est appliqué aux deux listes.

Tri sur place

Pour une vitesse accrue, vous pouvez utiliser une approche de tri sur place :

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

Cette approche surpasse généralement la version sur une ligne pour les petites listes mais devient comparable pour les listes plus grandes grâce aux routines zip optimisées de Python.

Alternative Approches

  1. Tri des indices : Si la comparaison des éléments de la deuxième liste est inefficace ou non prise en charge, triez plutôt les indices et utilisez-les pour réorganiser les listes.
  2. Fonction clé : Définir une fonction clé qui trie en fonction de la première liste sans comparer les éléments de la seconde liste :
list1 = [3, 2, 4, 1, 1]
list2 = [num * num for num in list1]
result1, result2 = zip(*sorted(zip(list1, list2), key=lambda x: x[0]))
Copier après la connexion

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