我正在学习python,并尝试创建变量、做一些数学运算、处理列表和使用统计函数等基本功能。然而,在试验statistics.mmean((和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'>
然后,我再次运行代码
from statistics import mean, median
z = [10,20,30,40,11]
x = mean(z)
y = median(z)
print(x)
print(type(x))
print(y)
print(type(y))
输出是
22.2
<class 'float'>
20
<class 'int'>
有一条规则需要知道吗;最佳实践";以跟踪并防止未来出现进一步的问题?
阅读文档:https://docs.python.org/3/library/statistics.html#statistics.median
中值是中心位置的稳健度量,受异常值影响较小。当数据点数为奇数时,返回中间数据点:
>>> median([1, 3, 5])
3
当数据点数为偶数时,通过取两个中间值的平均值来插值中值:
>>> median([1, 3, 5, 7])
4.0
这实际上意味着,如果存在偶数个值,则median()
将返回float
。否则,它将返回列表中间的项目,该项目可能是int
。
mean
的文档只是说:
算术平均值是数据的总和除以数据点的数量
因此,考虑到您的结果,看起来mean
被保留为int
,除非它必须是float
。
如果您想了解具体的CPython实现细节,可以获得源代码。
python中的许多方法都是为了进行相同的计算而编写的,但数据类型不同。对我来说,这看起来像是它首先询问更快的整数运算,如果这是可能的,并且true返回一个int。如果这个错误,它会进行更慢的浮点运算。如果要强制返回浮点值,可以使用fmean((。我认为median((没有类似的选项。