处理空列表/无效输入时查找列表最大/最小值(Python)

46 投票
3 回答
33624 浏览
提问于 2025-04-18 02:37

我在用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中,给minmax这两个函数添加了一个叫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错误。

撰写回答