web-dev-qa-db-fra.com

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 maximale et la valeur minimale 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 lève 'ValueError: min() arg is an empty sequence' mais je voudrais savoir comment faire pour que le programme imprime simplement 'empty list or invalid input' Au lieu de simplement planter. Comment gérer ces erreurs?

31
Jon_Computer

Saisissez et gérez l'exception.

try:
    print(min(l), max(l))
except (ValueError, TypeError):
    print('empty list or invalid input')

ValueError est levé avec une séquence vide. TypeError est levée lorsque la séquence contient des types non triables.

11
Qrtn

Dans Python 3.4, un argument de mot clé default a été ajouté aux fonctions min et max. Cela permet à une valeur de votre choix de être retourné 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 levé à la place.

63
Alex Riley

Spécification d'une valeur par défaut dans les versions antérieures de Python:

max(lst or [0])
max(lst or ['empty list'])
44
Curtis Yallop