I'm finding max value and min value of a list by using max(list)
and min(list)
in Python. However, I wonder how to manage empty lists.
For example if the list is an empty list []
, the program raises 'ValueError: min() arg is an empty sequence'
but I would like to know how to make the program just print 'empty list or invalid input'
instead of just crashing. How to manage those errors?
Catch and handle the exception.
try:
print(min(l), max(l))
except (ValueError, TypeError):
print('empty list or invalid input')
ValueError
is raised with an empty sequence. TypeError
is raised when the sequence contains unorderable types.
In Python 3.4, a default
keyword argument has been added to the min
and max
functions. This allows a value of your choosing to be returned if the functions are used on an empty list (or another iterable object). For example:
>>> 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
If the default
keyword is not given, a ValueError
is raised instead.
Specifying a default in earlier versions of Python:
max(lst or [0])
max(lst or ['empty list'])