Skip to content

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)
(notre maximum serait la chaîne vide lorsque la liste L est vide).