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
Susan Sarandonoriginal
2024-12-28 17:10:17619parcourir

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

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)

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

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