Gérer la liste vide / entrée invalide lors de la recherche de la valeur max/min de la liste (Python)
Je trouve la valeur max et la valeur min d'une liste en utilisant max(list)
et min(list)
en Python. Cependant, je me demande comment gérer les listes vides.
Par exemple, si la liste est une liste vide []
, le programme soulève 'ValueError: min() arg is an empty sequence'
, mais je voudrais savoir comment faire le programme, il suffit d'imprimer 'empty list or invalid input'
au lieu de simplement s'écraser. Comment gérer ces erreurs?
3 réponses
Capture et gère l'exception.
try:
print(min(l), max(l))
except (ValueError, TypeError):
print('empty list or invalid input')
ValueError
est soulevée avec une séquence vide. {[2] } est déclenché lorsque la séquence contient des types Non ordonnables.
Dans Python 3.4, un argument de mot clé default
a été ajouté aux fonctions min
et max
. Cela permet de renvoyer une valeur de votre choix si les fonctions sont utilisées sur une liste vide (ou un autre objet itérable). Par exemple:
>>> min([], default='no elements')
'no elements'
>>> max((), default=999)
999
>>> max([1, 7, 3], default=999) # 999 is not returned unless iterable is empty
7
Si le mot clé default
n'est pas donné, un ValueError
est déclenché à la place.
Spécification d'une valeur par défaut dans les versions antérieures de Python:
max(lst or [0])
max(lst or ['empty list'])