即使列表为空,也返回值的平均值



在Python中,计算列表最大值并输出值(即使列表为空(的方法是这样做:

max(python_list, default=0)

在 Python 中是否有任何类似的方法(在一个语句中,显然没有tryexceptifelse(来计算平均值?

我使用了这个简单的代码:

average = sum(python_list)/ len(python_list)

显然,我收到此错误并显示空列表:

ZeroDivisionError: division by zero

基于or运算符对真值的行为,即:

如果有的话,返回第一个 Truthy 值,否则返回最后一个 表达式中的值。

你可以做:

sum(lst) / (len(lst) or 1)

如果列表lst为空,这将返回0。请注意,这基本上是val if val else default的快捷方式。

一种方法是:

sum([val/len(lst) for val in lst])

如果列表为空,则不会除以len(lst)(即 0(,因此没有错误。如果列表为空,这将返回 0。

如果你认为答案是零,我会这样做,使用三元运算符:

avg = sum(lst) / len(lst) if lst else 0

这至少是一句话。