Python数据挖掘代码中%格式化与mannwhitneyu赋值语法疑问
关于Python数据挖掘代码的两个问题解答
先贴出你提供的代码方便对照:
from scipy.stats import mannwhitneyu data1 = [23, 45, 78, 56, 48] data2 = [90, 43, 28, 79, 69] data3 = [87, 56, 29, 52, 39] # compare samples stat, p = mannwhitneyu(data1, data2) print('Statistics = %.3f, p = %.3f' % (stat, p)) # interpret alpha = 0.05 if p > alpha: print('Same distribution (fail to reject H0)') else: print('Different distribution (reject H0)')
问题1:print语句中三个%符号的用途及% (stat, p)的理解
- 前两个
%是和.3f组合的格式化占位符标记:%.3f表示此处要填充一个浮点数,并且保留3位小数。比如stat的值是12.3456,替换后会显示为12.346(自动四舍五入)。 - 第三个
%是Python的字符串格式化运算符,作用是把后面括号里的元组(stat, p)中的值,按顺序替换到前面字符串对应的%.3f占位符位置。
直白点说,就是用stat的值替换第一个%.3f,用p的值替换第二个%.3f,生成格式化后的字符串再打印。
问题2:stat, p = mannwhitneyu(data1, data2)的语法理解
这是Python的元组解包语法。mannwhitneyu函数执行后会返回一个包含两个元素的元组(第一个是统计量stat,第二个是p值)。用stat, p = ...的写法,会直接把元组的第一个元素赋值给stat变量,第二个元素赋值给p变量。
举个简单的等价例子:
def get_result(): return 15.2, 0.032 x, y = get_result() # 此时x=15.2,y=0.032
和你代码里的逻辑完全一致,就是把函数返回的多个值一次性分配给对应变量。
内容的提问来源于stack exchange,提问作者sagum
相关产品推荐
相关产品推荐

