Manage empty list/invalid input when finding max/min value of list (Python)


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?

Asked By: Jon_Computer



Catch and handle the exception.

    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.

Answered By: Qrtn

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)

>>> max([1, 7, 3], default=999) # 999 is not returned unless iterable is empty

If the default keyword is not given, a ValueError is raised instead.

Answered By: Alex Riley

Specifying a default in earlier versions of Python:

max(lst or [0])
max(lst or ['empty list'])
Answered By: Curtis Yallop
Categories: questions Tags: , , , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.