La fonction min en Python pour les listes – Guide Complet
En Python, nous utilisons la fonction min()
pour trouver la plus petite valeur dans une liste ou dans un ensemble d’éléments comparables. Dans cet article, nous allons explorer en détail comment utiliser min()
avec des listes en Python.
Syntaxe de base
La syntaxe de base de la fonction min()
est la suivante :
min(iterable, *[, key, default])
iterable
: L’objet sur lequel vous souhaitez trouver la valeur minimale, tel qu’une liste, un tuple, ou tout autre objet itérable.*
: Indique que les arguments suivants sont optionnels.key
: Une fonction optionnelle qui spécifie une fonction de comparaison personnalisée. Par défaut,min()
utilise l’ordre naturel des éléments.default
: Une valeur par défaut retournée si l’itérable est vide.
Exemples d’utilisation
Exemple 1 : Trouver la plus petite valeur dans une liste de nombres
numbers = [5, 2, 8, 1, 9]
min_value = min(numbers)
print("La plus petite valeur dans la liste est :", min_value) # Output: La plus petite valeur dans la liste est : 1
Exemple 2 : Utilisation de la fonction key
Parfois, nous voulons trouver la plus petite valeur basée sur une condition personnalisée. Par exemple, pour trouver la longueur de la plus petite chaîne dans une liste de chaînes, nous utilisons une fonction lambda comme clé.
strings = ["apple", "banana", "orange", "kiwi"]
min_length = min(strings, key=lambda x: len(x))
print("La plus petite longueur de chaîne dans la liste est :", len(min_length)) # Output: La plus petite longueur de chaîne dans la liste est : 4
Exemple 3 : Gestion de cas où la liste est vide
empty_list = []
default_value = "Aucune valeur disponible"
min_value = min(empty_list, default=default_value)
print("La plus petite valeur dans la liste est :", min_value) # Output: La plus petite valeur dans la liste est : Aucune valeur disponible
Remarques importantes
- Si l’itérable passé à
min()
est vide et qu’aucune valeur par défaut n’est fournie, une exceptionValueError
sera levée. - La fonction
min()
renvoie un seul élément, même s’il y a plusieurs occurrences de la valeur minimale dans l’itérable.
Voici quelques exemples pratiques illustrant l’utilisation de la fonction min()
avec des listes en Python :
Exemple 1 : Calculer la note minimale dans une liste de notes
Supposons que nous ayons une liste de notes d’étudiants et que nous voulions trouver la note minimale :
notes = [85, 92, 78, 65, 90]
note_minimale = min(notes)
print("La note minimale est :", note_minimale) # Output: La note minimale est : 65
Exemple 2 : Trouver la plus petite distance entre des points dans un ensemble de coordonnées
Imaginons que nous ayons une liste de points représentés par des tuples (x, y), et que nous voulions trouver la plus petite distance entre deux points :
import math
points = [(1, 2), (4, 5), (3, 7), (8, 9)]
def distance(p1, p2):
return math.sqrt((p1[0] - p2[0])**2 + (p1[1] - p2[1])**2)
plus_petite_distance = min(distance(p1, p2) for p1 in points for p2 in points if p1 != p2)
print("La plus petite distance entre deux points est :", plus_petite_distance) # Output: La plus petite distance entre deux points est : 3.1622776601683795
Exemple 3 : Trouver la date la plus proche dans une liste de dates
Supposons que nous ayons une liste de dates et que nous voulions trouver la date la plus proche d’une date donnée.
from datetime import datetime
dates = [datetime(2024, 5, 10), datetime(2024, 5, 15), datetime(2024, 5, 20)]
date_cible = datetime(2024, 5, 17)
date_plus_proche = min(dates, key=lambda x: abs(x - date_cible))
print("La date la plus proche de la date cible est :", date_plus_proche) # Output: La date la plus proche de la date cible est : 2024-05-15 00:00:00
Ces exemples démontrent la polyvalence de la fonction min()
en Python et comment elle peut être utilisée pour résoudre une variété de problèmes pratiques avec des listes.
Voici quelques cas particuliers où l’utilisation de la fonction min()
avec des listes peut être particulièrement utile :
Gestion des valeurs nulles ou vides
Si vous travaillez avec des listes qui peuvent contenir des valeurs nulles ou vides, vous pouvez utiliser la fonction min()
avec l’argument default
pour fournir une valeur par défaut si la liste est vide ou si toutes ses valeurs sont nulles :
values = [0, None, 5, 3, None]
min_value = min(values, default=10) # Si la liste est vide ou ne contient que des valeurs nulles, retourne 10
print("La plus petite valeur est :", min_value) # Output: La plus petite valeur est : 0
Traitement des chaînes de caractères
Lorsque vous travaillez avec des listes de chaînes de caractères, vous pouvez utiliser la fonction min()
avec l’argument key
pour trouver la chaîne la plus petite en fonction de certains critères, comme la longueur de la chaîne ou l’ordre alphabétique :
strings = ["banana", "apple", "kiwi", "orange"]
plus_petite_longueur = min(strings, key=len)
print("La chaîne avec la plus petite longueur est :", plus_petite_longueur) # Output: La chaîne avec la plus petite longueur est : kiwi
premiere_lettre = min(strings) # Trouve la chaîne avec la première lettre dans l'ordre alphabétique
print("La première chaîne dans l'ordre alphabétique est :", premiere_lettre) # Output: La première chaîne dans l'ordre alphabétique est : apple
Comparaison basée sur des attributs d’objets
Si vous avez une liste d’objets et que vous voulez trouver l’objet avec la valeur minimale d’un attribut spécifique, vous pouvez utiliser la fonction min()
avec une fonction lambda comme argument key
:
class Personne:
def __init__(self, nom, age):
self.nom = nom
self.age = age
personnes = [Personne("Alice", 25), Personne("Bob", 30), Personne("Charlie", 20)]
plus_jeune = min(personnes, key=lambda x: x.age)
print("La personne la plus jeune est :", plus_jeune.nom) # Output: La personne la plus jeune est : Charlie
Ces cas particuliers démontrent la flexibilité de la fonction min()
en Python et comment elle peut être adaptée pour répondre à différents besoins lors de la manipulation de listes.