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?

28
demandé sur Alex Riley 2014-04-14 01:59:46

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.

8
répondu Qrtn 2014-04-13 22:03:11

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.

55
répondu Alex Riley 2017-05-13 18:30:42

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

max(lst or [0])
max(lst or ['empty list'])
43
répondu Curtis Yallop 2018-03-28 13:46:21