Introduction
Python est un langage de programmation de haut niveau qui est très populaire parmi les développeurs. L’une des tâches les plus courantes en programmation est de trier des listes. La bibliothèque standard de Python contient des méthodes pour trier des listes, mais il existe également des bibliothèques tierces qui offrent des fonctionnalités plus avancées. Dans cet article, nous allons explorer les différentes options pour trier des listes en Python.
Utiliser la méthode sort()
La méthode sort() est une méthode intégrée de Python qui permet de trier une liste en place. Cela signifie que la liste d’origine est modifiée et que la méthode ne renvoie pas une nouvelle liste triée. Voici un exemple de code qui utilise la méthode sort() pour trier une liste de nombres en ordre croissant :
numbers = [5, 2, 8, 1, 3]
numbers.sort()
print(numbers)
Le résultat de ce code sera :
[1, 2, 3, 5, 8]
Il est également possible de trier une liste dans l’ordre décroissant en utilisant l’argument reverse. Voici un exemple :
numbers = [5, 2, 8, 1, 3]
numbers.sort(reverse=True)
print(numbers)
Le résultat de ce code sera :
[8, 5, 3, 2, 1]
La méthode sort() peut également être utilisée pour trier une liste d’objets personnalisés. Dans ce cas, il est nécessaire de définir une fonction de comparaison qui sera utilisée pour comparer les objets. Cette fonction doit prendre deux arguments (les objets à comparer) et renvoyer un entier négatif, zéro ou positif selon que le premier argument est inférieur, égal ou supérieur au deuxième argument. Voici un exemple de code qui utilise la méthode sort() pour trier une liste d’objets Person par leur âge :
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
people = [Person('Alice', 25), Person('Bob', 18), Person('Charlie', 30)]
people.sort(key=lambda person: person.age)
for person in people:
print(person.name, person.age)
Le résultat de ce code sera :
Bob 18
Alice 25
Charlie 30
Dans cet exemple, la fonction lambda lambda person: person.age est utilisée comme fonction de comparaison. Cette fonction renvoie l’âge de chaque personne, qui est utilisé pour comparer les objets dans la méthode sort().
Utiliser la fonction sorted()
La fonction sorted() est une autre méthode pour trier des listes en Python. Contrairement à la méthode sort(), la fonction sorted() ne modifie pas la liste d’origine mais renvoie une nouvelle liste triée. Voici un exemple de code qui utilise la fonction sorted() pour trier une liste de nombres en ordre croissant :
numbers = [5, 2, 8, 1, 3]
sorted_numbers = sorted(numbers)
print(sorted_numbers)
Le résultat de ce code sera :
[1, 2, 3, 5, 8]
Il est également possible d’utiliser la fonction sorted() pour trier une liste dans l’ordre décroissant en utilisant l’argument reverse. Voici un exemple :
numbers = [5, 2, 8, 1, 3]
sorted_numbers = sorted(numbers, reverse=True)
print(sorted_numbers)
Le résultat de ce code sera :
[8, 5, 3, 2, 1]
Comme pour la méthode sort(), il est possible de trier une liste d’objets personnalisés en utilisant la fonction sorted(). Dans ce cas, il est également nécessaire de définir une fonction de comparaison qui sera utilisée pour comparer les objets. Voici un exemple de code qui utilise la fonction sorted() pour trier une liste d’objets Person par leur âge :
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
people = [Person('Alice', 25), Person('Bob', 18), Person('Charlie', 30)]
sorted_people = sorted(people, key=lambda person: person.age)
for person in sorted_people:
print(person.name, person.age)
Le résultat de ce code sera :
Bob 18
Alice 25
Charlie 30
Dans cet exemple, la fonction lambda lambda person: person.age est également utilisée comme fonction de comparaison.
Utiliser la méthode sort() avec une fonction de comparaison
La méthode sort() peut être utilisée avec une fonction de comparaison pour trier une liste d’objets personnalisés. Cette fonction est passée à la méthode sort() en tant qu’argument optionnel key. Voici un exemple de code qui utilise la méthode sort() avec une fonction de comparaison pour trier une liste d’objets Person par leur âge :
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def compare_people(person1, person2):
if person1.age < person2.age:
return -1
elif person1.age == person2.age:
return 0
else:
return 1
people = [Person('Alice', 25), Person('Bob', 18), Person('Charlie', 30)]
people.sort(key=lambda person: person.age, cmp=compare_people)
for person in people:
print(person.name, person.age)
Le résultat de ce code sera :
Bob 18
Alice 25
Charlie 30
Dans cet exemple, la fonction compare_people() est utilisée comme fonction de comparaison. Cette fonction compare les âges de deux personnes et renvoie un entier négatif, zéro ou positif selon que la première personne est inférieure, égale ou supérieure à la deuxième personne.
Il est important de noter que la méthode sort() avec une fonction de comparaison est obsolète à partir de Python 3.0. Dans les versions plus récentes de Python, il est nécessaire d'utiliser la fonction sorted() avec une fonction de comparaison.
Utiliser la bibliothèque numpy
La bibliothèque numpy est une bibliothèque tierce qui est largement utilisée pour la manipulation de tableaux et de matrices en Python. La bibliothèque numpy offre également des fonctions pour trier des tableaux. Voici un exemple de code qui utilise la fonction sort() de la bibliothèque numpy pour trier un tableau de nombres en ordre croissant :
import numpy as np
numbers = np.array([5, 2, 8, 1, 3])
numbers_sorted = np.sort(numbers)
print(numbers_sorted)
Le résultat de ce code sera :
[1 2 3 5 8]
Il est également possible d'utiliser la fonction sort() de la bibliothèque numpy pour trier un tableau dans l'ordre décroissant en utilisant l'argument kind='quicksort'. Voici un exemple :
import numpy as np
numbers = np.array([5, 2, 8, 1, 3])
numbers_sorted = np.sort(numbers)[::-1]
print(numbers_sorted)
Le résultat de ce code sera :
[8 5 3 2 1]
La bibliothèque numpy offre également des fonctions pour trier des tableaux multidimensionnels. Voici un exemple de code qui utilise la fonction sort() de la bibliothèque numpy pour trier un tableau bidimensionnel par la deuxième colonne :
import numpy as np
numbers = np.array([[5, 1], [2, 4], [8, 3], [1, 5], [3, 2]])
sorted_numbers = numbers[numbers[:,1].argsort()]
print(sorted_numbers)
Le résultat de ce code sera :
[[5 1]
[3 2]
[8 3]
[2 4]
[1 5]]
Dans cet exemple, la fonction argsort() est utilisée pour trier le tableau par la deuxième colonne. Cette fonction renvoie un tableau d'indices qui peut être utilisé pour trier le tableau original.
Conclusion
Dans cet article, nous avons exploré différentes options pour trier des listes en Python. La méthode sort() et la fonction sorted() sont des méthodes intégrées de Python qui offrent une grande flexibilité pour trier des listes. La bibliothèque numpy offre également des fonctions pour trier des tableaux, ce qui est utile pour la manipulation de tableaux multidimensionnels. Il est important de choisir la méthode de tri appropriée en fonction des exigences de l'application et des performances requises.
Note : Cet article n'est pas mis à jour régulièrement et peut contenir des informations obsolètes ainsi que des erreurs.