Retour aux fonctions prédéfinies☘
Attention
Ce paragraphe est réservé aux curieux qui veulent en savoir plus sur python.
Revenons aux fonctions max
et min
prédéfinies.
La documentation
présente un argument key.
Exercice 1☘
On dispose d'une liste L de triplets d'entiers.
Consulter la documentation de la fonction max
et utiliser l'argument key
pour déterminer
un triplet a de L tel que a[0] soit maximum (comme nous l'avons fait dans cette page)
Un code possible
1 2 3 4 5 6 7 8 9 | def composante0(a): """ a est un tuple """ return a[0] t = [ (15, 14, 12), (18, 12, 10), (17, 18, 20), (3, 13, 9)] m = max(t, key=composante0) print(m) |
On peut faire plus bref en python en utilisant les fonctions lambda (faîtes une recherche sur le web pour comprendre le principe):
1 2 3 4 5 | t = [ (15, 14, 12), (18, 12, 10), (17, 18, 20), (3, 13, 9)] m = max(t, key= lambda x: x[0]) print(m) |
Exercice 2☘
On dispose d'une liste L de uplets d'entiers. Déterminer, en utilisant l'argument key, le tuple de plus grande moyenne.
Un code possible
1 2 3 4 | t = [ (15, 14, 12), (18, 12, 10), (17, 18, 20), (3, 13, 9)] m = max(t, key= lambda x: sum(x)/len(x)) print(m) |
Exercice 3☘
On dispose d'une liste de mots.
Par exemple L = ["abaque", "ancre", "barque", "cancre", "Diable", "animal", "caramel"]
.
On veut, comme dans cette page, renvoyer le maximum en considérant l'ordre du dictionnaire, sans différencier majuscule et minuscule.
Traiter cette question en utilisant l'argument key
de la fonction prédéfinie de python
Un code possible
1 2 3 4 | L = ["abaque", "ancre", "barque", "cancre", "Diable", "animal", "caramel"] m = max(L, key= lambda x: x.lower()) print(m) |
Info
La lecture de la documentation montre qu'on peut aussi facilement ajouter un traitement du cas des séquences vides.
1 2 3 | L = [] m = max(L, default="coucou") print(m) |
On obtient:
1 | coucou |
Dans le cadre de notre exercice (tri des mots), on pourrait choisir ceci:
1 2 3 | L = [] m = max(L, default='') print(m) |