在Python统计平均值和中值中,如何定义输出类型?

在Python统计平均值和中值中,如何定义输出类型?,python,python-3.x,statistics,Python,Python 3.x,Statistics,我正在学习python,并尝试创建变量、做一些数学运算、处理列表和使用统计函数等基本功能。然而,在试验statistics.mean()和statistics.median()时,我可以看到输出变量类型的模式 作为两个示例,我运行下面的代码两次,只在列表中包含一个元素: from statistics import mean, median z = [10,20,30,40] x = mean(z) y = median(z) print(x) print(type(x)) print(y) p

我正在学习python,并尝试创建变量、做一些数学运算、处理列表和使用统计函数等基本功能。然而,在试验statistics.mean()和statistics.median()时,我可以看到输出变量类型的模式

作为两个示例,我运行下面的代码两次,只在列表中包含一个元素:

from statistics import mean, median
z = [10,20,30,40]
x = mean(z)
y = median(z)
print(x)
print(type(x))
print(y)
print(type(y))
结果是:

25
<class 'int'>
25.0
<class 'float'>
结果是

22.2
<class 'float'>
20
<class 'int'>
22.2
20
是否有需要了解的规则或“最佳实践”来遵循并防止将来出现进一步的问题?

阅读文档:

中位数是中心位置的稳健度量,受异常值影响较小。当数据点数为奇数时,返回中间数据点:

当数据点数为偶数时,通过取两个中间值的平均值对中值进行插值:

这实际上意味着,如果有偶数个值,
median()
将返回一个
float
。否则,它将从列表中间返回该项,该项可能是
int

法官说:

算术平均值是数据的总和除以数据点的数量

因此,根据您的结果,它看起来像
mean
被保留为
int
,除非它必须是
float


如果您想知道具体的CPython实现细节,可以使用。

python中的许多方法都是为了执行相同的计算而编写的,但数据类型不同。对我来说,这看起来像是它首先询问更快的整数运算,如果这是可能的,则返回一个int。如果这是错误的,它将进行较慢的浮点运算。如果要强制浮点返回,可以改用fmean()。我不认为media()有类似的选项。

有什么问题吗?我以前读过文档,但正如您所示,还不清楚。当我测试时,我没有意识到任何模式。但你所说的是一个很好的规则,似乎是真的。谢谢你的帮助@爱德华多很高兴我能帮忙。我查看了源代码,它看起来非常简单,并且与我对文档的解释相匹配。
22.2
<class 'float'>
20
<class 'int'>
>>> median([1, 3, 5])
3
>>> median([1, 3, 5, 7])
4.0