Comment trier une liste en Python (croissant et décroissant)

Apprenez à trier une liste en Python à l'aide de la méthode sort() et de la fonction sorted(). Découvrez des exemples de tri de clés personnalisé et d’ordre inverse.

Essayez cette solution dans l'éditeur

Aperçu

Le tri des données est l'une des tâches les plus courantes en programmation, qu'il s'agisse de classer les profils d'utilisateurs par âge, de répertorier les produits par prix ou d'organiser les résultats de recherche. Python propose deux méthodes intégrées et hautement optimisées pour trier les listes : la méthode `list.sort()` et la fonction `sorted()`. Les deux utilisent un algorithme de tri très efficace appelé Timsort, qui s'exécute en complexité temporelle O(N log N).

La principale différence entre les deux est la mutabilité. La méthode `list.sort()` trie la liste sur place, ce qui signifie qu'elle modifie directement la liste d'origine et renvoie `Aucun`. La fonction `sorted()`, quant à elle, laisse la liste d'origine inchangée et renvoie une toute nouvelle liste triée. Cette distinction est cruciale : utilisez `sort()` lorsque vous souhaitez économiser de la mémoire et n'avez pas besoin de l'ordre d'origine, et utilisez `sorted()` lorsque vous devez conserver la liste d'origine intacte ou lors du tri d'itérables non-listes comme des tuples ou des dictionnaires.

Les deux méthodes de tri acceptent deux arguments de mot-clé facultatifs : « reverse » et « key ». L'argument « reverse » est une valeur booléenne ; le définir sur « True » trie la liste par ordre décroissant (inverse). L'argument `key` accepte une fonction qui est appliquée à chaque élément avant la comparaison. Cela permet une logique de tri complexe, telle que le tri d'une liste de chaînes selon leur longueur ou le tri d'une liste de dictionnaires selon une clé spécifique.

Sortie de code et d'exécution

Ce code montre le tri d'une liste de nombres à l'aide de sort() et sorted(), le tri inversé et le tri par clé personnalisée par longueur de chaîne.

numbers = [42, 7, 12, 89, 23]

# 1. Using sorted() (returns new list)
new_sorted = sorted(numbers)
print("Original:", numbers)
print("Sorted new list:", new_sorted)

# 2. Using sort() (in-place modification)
numbers.sort()
print("Modified original list:", numbers)

# 3. Sorting in reverse (descending)
numbers.sort(reverse=True)
print("Reverse sorted list:", numbers)

# 4. Custom sorting (by string length)
words = ["banana", "pear", "apple", "fig"]
words.sort(key=len)
print("Sorted by length:", words)
Sortie terminale
Original: [42, 7, 12, 89, 23]
Sorted new list: [7, 12, 23, 42, 89]
Modified original list: [7, 12, 23, 42, 89]
Reverse sorted list: [89, 42, 23, 12, 7]
Sorted by length: ['fig', 'pear', 'apple', 'banana']

Mise en œuvre étape par étape

  • Utilisez la fonction sorted() pour trier une copie de la liste sans modifier les données d'origine.
  • Utilisez la méthode .sort() directement sur l'objet liste pour le modifier sur place et économiser de la mémoire.
  • Passez reverse=True comme paramètre pour trier les éléments par ordre décroissant.
  • Utilisez key=lambda x: ... pour trier les éléments en fonction d'une propriété personnalisée (comme la longueur ou les valeurs imbriquées).

Foire aux questions

Quelle est la différence entre list.sort() et sorted() ?

list.sort() modifie la liste sur place et renvoie Aucun, tandis que sorted() laisse la liste d'origine inchangée et renvoie une nouvelle liste triée.

Comment trier une liste de dictionnaires par clé ?

Utilisez le paramètre key avec une fonction lambda ou Operator.itemgetter. Par exemple : list.sort(key=lambda item: item["age"]).

Sujets connexes

Ressources Python recommandées

Développez vos connaissances avec des didacticiels interactifs, des aide-mémoire et des comparaisons de codes associés.