处理空列表/无效输入时查找列表最大/最小值(Python)
我在用Python找一个列表的最大值和最小值,使用的是 max(list)
和 min(list)
。不过,我在想如果列表是空的,该怎么处理呢。
比如说,如果列表是一个空列表 []
,程序就会报错 'ValueError: min() arg is an empty sequence'
,但我想知道怎么让程序只打印 'empty list or invalid input'
,而不是直接崩溃。怎么处理这些错误呢?
3 个回答
52
在早期版本的Python中,指定默认值的方法:
max(lst or [0])
max(lst or ['empty list'])
100
在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
错误。
16
捕获并处理异常。
try:
print(min(l), max(l))
except (ValueError, TypeError):
print('empty list or invalid input')
当序列为空时,会出现ValueError
错误。当序列中包含无法排序的类型时,会出现TypeError
错误。