Participer au site avec un Tip
Rechercher
 

Améliorations / Corrections

Vous avez des améliorations (ou des corrections) à proposer pour ce document : je vous remerçie par avance de m'en faire part, cela m'aide à améliorer le site.

Emplacement :

Description des améliorations :

Module « builtins »

Fonction max - module builtins

Signature de la fonction max

 
max(iterable, *[, default=obj, key=func]) -> value
max(arg1, arg2, *args, *[, key=func]) -> value

Description

Cette fonction permet de calculer la valeur maximale parmi un ensemble de valeurs. Deux principales syntaxes d'appels sont supportées par cette fonction.

Vous pouvez utiliser cette fonction avec des types de données quelconques, mais lors d'un appel, toutes les données devront être de la même nature. Si le type considéré propose un opérateur <, alors rien de plus n'est requis.

>>> # Cas ou les données ne sont pas compatibles
>>> data = [10, "toto", True]
>>> max(data)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: '>' not supported between instances of 'str' and 'int'
>>> 
>>> 
>>> # Ici, toutes les données sont du même type, donc tout est ok !
>>> from datetime import date
>>> dates = [date(2015, 1, 1), date(2020, 6, 6), date(2010, 8, 9)]
>>> max(dates)
datetime.date(2020, 6, 6)
>>> 

Dans le cas où les données à traiter ne sont pas directement comparables, vous avez la possibilité de spécifier une fonction, ou une lambda, permettant de calculer une valeur comparable pour chacune des données d'origine.

>>> data = [{"first_name": "James", "last_name": "Bond", "kills": 1_007},
...         {"first_name": "Jason", "last_name": "Bourne", "kills": 954}]
>>> max(data)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: '>' not supported between instances of 'dict' and 'dict'
>>> max(data, key=lambda spy: spy["kills"])
{'first_name': 'James', 'last_name': 'Bond', 'kills': 1007}
>>>

max.__doc__

max(iterable, *[, default=obj, key=func]) -> value
max(arg1, arg2, *args, *[, key=func]) -> value

With a single iterable argument, return its biggest item. The
default keyword-only argument specifies an object to return if
the provided iterable is empty.
With two or more arguments, return the largest argument.

Paramètres

ParamètreDescription
 iterable : iterable 
La collection dans laquelle rechercher la plus grande valeur.
 arg1, arg2, *args : object 
Des données, du coup hors collection, dans lesquelles rechercher la plus grande valeur. Avec cette manière d'invoquer la fonction max, au moins deux paramètres sont requis.
 default : object 
Si le premier paramètre est une collection vide, ce paramètre nommé indique la valeur retournée par la fonction max. Ce paramètre existe depuis Python 3.4.
 key : function 
Une fonction, ou une lambda, permettant de produire le critère de comparaison de chaque donnée, au cas où les données d'origine ne seraient pas directement comparables.

Valeur de retour

La valeur de retour est de type object.

Elle correspond à la plus grande information présente parmi les données à comparer.

Exception

Exemple(s) de code

 1 
 2 
 3 
 4 
 5 
 6 
 7 
 8 
 9 
 10 
 11 
 12 
 13 
 14 
 15 
 16 
 17 
 18 
 19 
 20 
 21 
 22 
 23 
 24 
 25 
 26 
 27 
#!/usr/bin/python3

# Une classe permettant de représenter le concept de nombres rationnels.
class Rational:
    
    # Ceci est le constructeur de notre classe Rational
    def __init__(self, num, den):
        if den == 0:
            raise ValueError("denominator cannot be null")
        self.num = num
        self.den = den

    # Cette méthode permet de transformer nos rationnels en chaînes de caractères.
    def __str__(self):
        return f"[{self.num}/{self.den}]"
    
    # A noter : la classe ne fournit pas, volontairement, d'opérateur >
    # Il va donc être nécessaire d'utiliser une fonction/lambda de comparaison.
    

if __name__ == '__main__':
    # On construit une liste de trois nombres rationnels.
    data = [Rational(7, 2), Rational(1, 3), Rational(2, 3)]
    
    # On recherche la plus grande valeur et on l'affiche.
    m = max(data, key=lambda rat: rat.num / rat.den)
    print(f"Le plus grand rationnel de la liste est {m}")
Exemple d'utilisation de la fonction max.

Et voici les résultats produits par cet exemple.

$> python3 sample.py
Le plus grand rationnel de la liste est [7/2]
$> 

Voir aussi

La classe list

Fonction min
Fonction sum