Управление пустым списком/недопустимым вводом при поиске максимального/минимального значения списка (Python)
Я нахожу максимальное значение и минимальное значение списка, используя max(list)
и min(list)
в Python. Однако мне интересно, как управлять пустыми списками.
Например, если список является пустым списком []
, программа поднимает 'ValueError: min() arg is an empty sequence'
, но я хотел бы знать, как заставить программу просто печатать 'empty list or invalid input'
вместо просто сбой. Как управлять этими ошибками?
Ответы
Ответ 1
Поймать и обработать исключение.
try:
print(min(l), max(l))
except (ValueError, TypeError):
print('empty list or invalid input')
ValueError
возникает с пустой последовательностью. TypeError
возникает, когда последовательность содержит неупорядоченные типы.
Ответ 2
В Python 3.4 к функциям min
и max
добавлен аргумент ключевого слова default
. Это позволяет вернуть значение вашего выбора, если функции используются в пустом списке (или другом итерируемом объекте). Например:
>>> 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
Если ключевое слово default
не задано, вместо него создается ValueError
.
Ответ 3
Указание значения по умолчанию в более ранних версиях Python:
max(list or [0])
max(list or ['empty list'])