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

时间:2014-04-13 21:59:46

标签: python list error-handling max min

我在Python中使用max(list)min(list)找到列表的最大值和最小值。但是,我想知道如何管理空列表。

例如,如果列表是空列表[],程序会引发'ValueError: min() arg is an empty sequence',但我想知道如何使程序只打印'empty list or invalid input'而不是崩溃。如何管理这些错误?

3 个答案:

答案 0 :(得分:61)

在Python 3.4中,defaultmin函数添加了max关键字参数。如果函数用于空列表(或其他可迭代对象),则允许返回您选择的值。例如:

>>> 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

答案 1 :(得分:44)

在早期版本的Python中指定默认值:

max(lst or [0])
max(lst or ['empty list'])

答案 2 :(得分:11)

抓住并处理异常。

try:
    print(min(l), max(l))
except (ValueError, TypeError):
    print('empty list or invalid input')

ValueError以空序列引发。当序列包含不可共享的类型时,会引发TypeError