Introduction à la fonction de tri en Python
Python est un langage de programmation puissant et flexible qui offre une variété de méthodes pour trier les données. L’une des plus couramment utilisées est la fonction sort()
, qui est une méthode intégrée des listes en Python.
La méthode sort()
modifie la liste elle-même, c’est-à-dire qu’elle trie la liste sur place. Par exemple :
numbers = [6, 9, 3, 1]
numbers.sort()
print(numbers) # Output: [1, 3, 6, 9]
En plus de sort()
, Python offre également la fonction sorted()
, qui peut être utilisée avec n’importe quel itérable et renvoie une nouvelle liste triée sans modifier l’itérable original :
numbers = (6, 9, 3, 1) # a tuple, which is immutable
sorted_numbers = sorted(numbers)
print(sorted_numbers) # Output: [1, 3, 6, 9]
Ces deux fonctions de tri ont un paramètre optionnel appelé key
qui peut être utilisé pour spécifier une fonction à appeler sur chaque élément de la liste avant de faire la comparaison pour le tri. C’est ce qu’on appelle la « fonction clé de tri » et c’est un concept puissant que nous explorerons en détail dans cet article.
Exploration de la méthode list.sort() et de la fonction sorted()
La méthode list.sort()
et la fonction sorted()
sont deux des outils les plus couramment utilisés pour trier les données en Python. Bien qu’ils soient similaires en apparence, ils ont des différences clés qui les rendent appropriés pour différents scénarios.
La méthode list.sort()
La méthode list.sort()
est une méthode intégrée des listes en Python. Elle trie la liste sur place, ce qui signifie qu’elle modifie la liste originale. Voici un exemple d’utilisation de list.sort()
:
numbers = [6, 9, 3, 1]
numbers.sort()
print(numbers) # Output: [1, 3, 6, 9]
Dans cet exemple, la liste numbers
est triée en ordre croissant. Notez que la liste originale a été modifiée.
La fonction sorted()
La fonction sorted()
est une fonction intégrée de Python qui prend un itérable et renvoie une nouvelle liste triée. Contrairement à list.sort()
, sorted()
ne modifie pas l’itérable original. Voici un exemple d’utilisation de sorted()
:
numbers = (6, 9, 3, 1) # a tuple, which is immutable
sorted_numbers = sorted(numbers)
print(sorted_numbers) # Output: [1, 3, 6, 9]
Dans cet exemple, un tuple est passé à sorted()
, et une nouvelle liste triée est renvoyée. Le tuple original reste inchangé.
Conclusion
La méthode list.sort()
et la fonction sorted()
sont tous deux utiles pour trier les données en Python. Le choix entre les deux dépend de vos besoins spécifiques. Si vous voulez trier une liste en place, utilisez list.sort()
. Si vous voulez trier un itérable sans le modifier, ou si vous voulez trier une liste sans la modifier, utilisez sorted()
.
Comprendre le paramètre ‘key’ dans les fonctions de tri
Le paramètre key
dans les fonctions de tri list.sort()
et sorted()
est un outil puissant qui permet de personnaliser l’ordre de tri. Il s’agit d’une fonction qui prend un élément de la liste et renvoie une valeur sur laquelle effectuer le tri.
Utilisation de base du paramètre ‘key’
Voici un exemple simple d’utilisation du paramètre key
:
words = ['apple', 'banana', 'cherry', 'date']
words.sort(key=len)
print(words) # Output: ['date', 'apple', 'cherry', 'banana']
Dans cet exemple, nous passons la fonction intégrée len
comme clé. Cela signifie que sort()
trie les mots non pas par ordre alphabétique, mais par leur longueur.
Utilisation avancée du paramètre ‘key’
Le paramètre key
devient vraiment puissant lorsque vous l’utilisez avec une fonction personnalisée. Par exemple, supposons que vous ayez une liste de tuples représentant des personnes, où chaque tuple contient un nom et un âge :
people = [('Alice', 30), ('Bob', 20), ('Charlie', 25)]
Si vous voulez trier cette liste par âge, vous pouvez définir une fonction qui renvoie l’âge :
def get_age(person):
return person[1]
people.sort(key=get_age)
print(people) # Output: [('Bob', 20), ('Charlie', 25), ('Alice', 30)]
Dans cet exemple, get_age
est une fonction qui prend un tuple et renvoie l’âge. Lorsque nous passons cette fonction comme clé à sort()
, elle trie la liste de personnes par âge.
Conclusion
Le paramètre key
dans les fonctions de tri list.sort()
et sorted()
est un outil extrêmement flexible pour personnaliser l’ordre de tri en Python. Que vous vouliez trier par longueur, par une valeur spécifique dans un tuple, ou par tout autre critère, le paramètre key
vous donne la flexibilité dont vous avez besoin. Dans les sections suivantes, nous explorerons des exemples d’utilisation de la fonction clé de tri et des cas d’utilisation plus avancés.
Exemples d’utilisation de la fonction clé de tri
La fonction clé de tri en Python est un outil puissant qui peut être utilisé de nombreuses façons différentes. Voici quelques exemples qui illustrent comment elle peut être utilisée.
Tri d’une liste de chaînes par longueur
Supposons que vous ayez une liste de mots et que vous voulez les trier par longueur plutôt que par ordre alphabétique. Vous pouvez le faire en utilisant la fonction len
comme clé :
words = ['apple', 'banana', 'cherry', 'date']
words.sort(key=len)
print(words) # Output: ['date', 'apple', 'cherry', 'banana']
Dans cet exemple, sort()
trie les mots par leur longueur, du plus court au plus long.
Tri d’une liste de tuples par le deuxième élément
Supposons que vous ayez une liste de tuples où chaque tuple contient un nom et un âge. Si vous voulez trier cette liste par âge, vous pouvez définir une fonction qui renvoie l’âge et l’utiliser comme clé :
def get_age(person):
return person[1]
people = [('Alice', 30), ('Bob', 20), ('Charlie', 25)]
people.sort(key=get_age)
print(people) # Output: [('Bob', 20), ('Charlie', 25), ('Alice', 30)]
Dans cet exemple, get_age
est une fonction qui prend un tuple et renvoie l’âge. Lorsque nous passons cette fonction comme clé à sort()
, elle trie la liste de personnes par âge.
Tri d’une liste de dictionnaires par une valeur spécifique
Supposons que vous ayez une liste de dictionnaires où chaque dictionnaire représente une personne avec un nom et un âge. Si vous voulez trier cette liste par âge, vous pouvez utiliser une fonction lambda qui renvoie l’âge et l’utiliser comme clé :
people = [{'name': 'Alice', 'age': 30}, {'name': 'Bob', 'age': 20}, {'name': 'Charlie', 'age': 25}]
people.sort(key=lambda person: person['age'])
print(people) # Output: [{'name': 'Bob', 'age': 20}, {'name': 'Charlie', 'age': 25}, {'name': 'Alice', 'age': 30}]
Dans cet exemple, la fonction lambda prend un dictionnaire et renvoie l’âge. Lorsque nous passons cette fonction comme clé à sort()
, elle trie la liste de personnes par âge.
Ces exemples montrent la flexibilité et la puissance de la fonction clé de tri en Python. Dans la section suivante, nous explorerons des cas d’utilisation plus avancés de la fonction clé de tri.
Cas d’utilisation avancés de la fonction clé de tri
La fonction clé de tri en Python est incroyablement flexible et peut être utilisée de nombreuses façons différentes. Voici quelques cas d’utilisation avancés qui illustrent sa puissance.
Tri par plusieurs critères
Supposons que vous ayez une liste de tuples où chaque tuple contient un nom et un âge, et que vous voulez trier cette liste d’abord par âge, puis par nom. Vous pouvez le faire en utilisant une fonction clé qui renvoie un tuple :
def get_age_and_name(person):
return person[1], person[0]
people = [('Alice', 30), ('Bob', 30), ('Charlie', 25)]
people.sort(key=get_age_and_name)
print(people) # Output: [('Charlie', 25), ('Alice', 30), ('Bob', 30)]
Dans cet exemple, get_age_and_name
est une fonction qui prend un tuple et renvoie un tuple contenant l’âge et le nom. Lorsque nous passons cette fonction comme clé à sort()
, elle trie la liste de personnes d’abord par âge, puis par nom.
Tri en ordre décroissant
Par défaut, sort()
et sorted()
trient en ordre croissant. Si vous voulez trier en ordre décroissant, vous pouvez utiliser le paramètre reverse
en plus du paramètre key
:
numbers = [6, 9, 3, 1]
numbers.sort(reverse=True)
print(numbers) # Output: [9, 6, 3, 1]
Dans cet exemple, sort()
trie les nombres en ordre décroissant.
Tri de chaînes sans tenir compte de la casse
Par défaut, sort()
et sorted()
trient les chaînes en tenant compte de la casse, ce qui signifie que toutes les chaînes en majuscules viennent avant toutes les chaînes en minuscules. Si vous voulez trier les chaînes sans tenir compte de la casse, vous pouvez utiliser la méthode str.lower
comme clé :
words = ['Apple', 'banana', 'Cherry', 'Date']
words.sort(key=str.lower)
print(words) # Output: ['Apple', 'banana', 'Cherry', 'Date']
Dans cet exemple, sort()
trie les mots sans tenir compte de la casse, grâce à l’utilisation de str.lower
comme clé.
Ces exemples montrent quelques-uns des nombreux cas d’utilisation avancés de la fonction clé de tri en Python. Avec un peu de créativité, vous pouvez utiliser la fonction clé de tri pour résoudre une grande variété de problèmes de tri.