You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 15:45:46