1. A propos de la fonction max()
La fonction max() est une fonction intégrée à Python qui permet de trouver l'élément ayant la valeur maximale dans un itérable (comme une liste, un tuple, ou une chaîne de caractères). Lorsqu'elle est appliquée à une liste, elle parcourt tous les éléments et retourne le plus grand selon l'ordre naturel des éléments (numérique, alphabétique, etc.). C'est un outil fondamental pour l'analyse de données et la logique de programmation.
2. Utilisation de base avec des listes numériques
L'utilisation la plus simple de max() est de trouver le nombre le plus élevé dans une liste de valeurs numériques. La syntaxe est directe : max(ma_liste).
|
1 2 3 4 5 6 7 8 9 |
# Trouver le plus grand nombre dans une liste notes = [12, 15, 18, 10, 17] plus_grande_note = max(notes) print(f"La plus grande note est : {plus_grande_note}") # Liste avec des nombres négatifs et décimaux temperatures = [-5, 3.2, -1.8, 10, 2.5] temp_max = max(temperatures) print(f"La température maximale est : {temp_max}") |
Sortie :
|
1 2 |
La plus grande note est : 18 La température maximale est : 10 |
3. Utilisation avec des listes de chaînes de caractères
Avec des chaînes de caractères (strings), max() retourne la chaîne qui vient en dernier selon l'ordre lexicographique (basé sur les valeurs Unicode/ASCII). Pour l'alphabet, 'z' est plus grand que 'a'.
Comparaison alphabétique simple
L'ordre est sensible à la casse. Les majuscules ('A' à 'Z') viennent avant les minuscules ('a' à 'z') dans la table Unicode.
|
1 2 3 4 5 6 7 8 |
noms = ["Alice", "Bob", "Charlie", "david"] nom_max = max(noms) print(f"Le nom 'maximum' (ordre lexicographique) est : {nom_max}") # Attention à la casse mots = ["Pomme", "ananas", "Banane"] mot_max = max(mots) print(f"Le mot 'maximum' est : {mot_max}") |
Sortie :
|
1 2 |
Le nom 'maximum' (ordre lexicographique) est : david Le mot 'maximum' est : ananas |
4. Utilisation du paramètre key pour un contrôle fin
Le paramètre key est extrêmement puissant. Il accepte une fonction (souvent une fonction lambda) qui est appliquée à chaque élément avant la comparaison. max() retourne alors l'élément original pour lequel la valeur de retour de la fonction key est maximale.
Trouver l'élément le plus long
On utilise la fonction intégrée len comme argument pour key.
|
1 2 3 |
animaux = ["chat", "éléphant", "souris", "hippopotame"] plus_long = max(animaux, key=len) print(f"L'animal avec le nom le plus long est : {plus_long}") |
Sortie :
|
1 |
L'animal avec le nom le plus long est : hippopotame |
Trouver le dictionnaire avec la valeur maximale d'une clé
Ceci est très utile pour traiter des données structurées.
|
1 2 3 4 5 6 7 8 |
etudiants = [ {"nom": "Pierre", "age": 22}, {"nom": "Marie", "age": 19}, {"nom": "Jean", "age": 25} ] # Trouver l'étudiant le plus âgé le_plus_age = max(etudiants, key=lambda etudiant: etudiant["age"]) print(f"L'étudiant le plus âgé est : {le_plus_age['nom']}, {le_plus_age['age']} ans") |
Sortie :
|
1 |
L'étudiant le plus âgé est : Jean, 25 ans |
5. Gestion des listes vides et valeurs par défaut
Par défaut, appeler max() sur une liste vide lève une ValueError. Pour éviter cela, on peut utiliser le paramètre default pour spécifier une valeur à retourner si l'itérable est vide.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
liste_pleine = [1, 5, 3] print(max(liste_pleine)) # Affiche 5 liste_vide = [] # print(max(liste_vide)) # Lèverait ValueError: max() arg is an empty sequence # Utilisation du paramètre default valeur_max = max(liste_vide, default="La liste est vide") print(valeur_max) # Affiche 'La liste est vide' # Avec une valeur numérique par défaut resultat = max([], default=0) print(f"La valeur max par défaut est : {resultat}") |
Sortie :
|
1 2 3 |
5 La liste est vide La valeur max par défaut est : 0 |
6. Cas pratiques et pièges courants
Comparaison de types hétérogènes
Python ne permet généralement pas de comparer directement des types différents (ex: int et str) avec max(), cela génère une TypeError.
|
1 2 3 |
liste_mixte = [10, "20", 30] # max(liste_mixte) # Lèverait TypeError: '>' not supported between instances of 'str' and 'int' print("Cette ligne ne s'exécutera pas si la ligne précédente est décommentée") |
Sortie :
|
1 |
Cette ligne ne s'exécutera pas si la ligne précédente est décommentée |
Trouver l'indice de l'élément maximum
La fonction max() ne donne pas directement l'indice (l'index) de l'élément maximum. Pour l'obtenir, on combine max() avec la méthode index() des listes.
|
1 2 3 4 5 6 7 8 |
valeurs = [45, 12, 78, 23, 91] valeur_max = max(valeurs) indice_max = valeurs.index(valeur_max) print(f"La valeur max est {valeur_max} et se trouve à l'indice {indice_max}") # En une ligne (peut être moins lisible) indice = valeurs.index(max(valeurs)) print(f"Indice du maximum : {indice}") |
Sortie :
|
1 2 |
La valeur max est 91 et se trouve à l'indice 4 Indice du maximum : 4 |
Utilisation avec plusieurs arguments
La fonction max() peut aussi être appelée avec plusieurs arguments positionnels (au lieu d'un seul itérable). Elle retournera alors le plus grand de ces arguments.
|
1 2 3 4 5 6 |
# Trouver le maximum parmi des arguments séparés maximum = max(7, 12, 4, 9, 15) print(f"Le maximum parmi les nombres donnés est : {maximum}") # Mélange de formats print(max("abc", "abd", "aba")) # Compare les chaînes directement |
Sortie :
|
1 2 |
Le maximum parmi les nombres donnés est : 15 abd |
Younes Derfoufi
CRMEF OUJDA



