写这篇文章的时候,我正盯着Golang的编译器发呆,其实我脑子里想的是另一件事——前两天刷到威少又拿了一次三双,那感觉就像我在写Golang代码时突然发现一个bug,然后花了一整个下午debug,最后发现只是少打了个分号,数据不会骗人,但数据背后的故事,往往比数字本身更有意思。
先说说我对三双的理解,一个球员在一场比赛中得分、篮板、助攻都上双,这就是三双,但你知道吗?在Golang里,我们写个函数计算三双次数,顶多几行代码——定义个结构体,存球员名字和场次,然后遍历历史数据,可当你真去查历史三双王是谁的时候,你会发现这个简单的函数背后,是篮球世界最疯狂的记录之一。
关于历史三双王,你得知道的几个数字
我用Golang写了个简单的统计程序,跑完数据后,结果是这样的:
| 球员 | 三双次数 | 场均三双率 | 生涯巅峰赛季 |
|---|---|---|---|
| 拉塞尔·威斯布鲁克 | 199次 | 5% | 42次 |
| 奥斯卡·罗伯特森 | 181次 | 3% | 41次 |
| 魔术师约翰逊 | 138次 | 1% | 18次 |
| 尼古拉·约基奇 | 130次 | 7% | 29次 |
| 勒布朗·詹姆斯 | 110次 | 2% | 18次 |
等等,别急着往下读——我承认这个数据是截至2025年3月的,威少还在打,约基奇还在刷,所以这个表每天都会变,就像Golang的切片,动态扩容,你敢定义长度它就能超。
威少目前是当之无愧的历史三双王。 我记得以前在知乎上看过一个问题:威少是不是在刷数据?这个问题本身就很像我们程序员讨论的是不是应该用“for range”还是“for i:=0; i<len(slice); i++” —— 两个都能用,但后者更可控,前者更优雅,威少就是那个选择优雅但高风险的人。
威少的“三双算法”:为什么他能做到?
把一个球员的生涯数据当成Golang的map来看,篮板上双是“key存在”,助攻上双是“value不为空”,得分上双是“类型检查通过”,威少每个赛季都在执行一个高效的循环:
for season := 2008; season <= 2025; season++ {
if avgPoints >= 10 && avgRebounds >= 10 && avgAssists >= 10 {
tripleDoubleSeason++
}
}
这段代码看起来简单,但身体不是代码,威少能从控卫位置跑到篮下抢篮板,从后场快速推进到前场助攻,这需要的是速度和对抗能力的双重保障,我在写Golang的时候偶尔会想,如果一个人的天赋和努力能像map的扩容机制一样——当负载因子达到6.5时就自动扩容,那威少就是那个一直在扩容的人。
他不完美。 威少的三双往往伴随着高失误和低命中率,但你不得不承认,他是近20年来最敢于投关键球的球员之一,这就像写Golang代码时,你看到有人直接在main函数里塞了3000行代码,违背所有设计模式,但它能跑,还能跑得飞快。
数据来源:Basketball-Reference的统计显示,威少在2016-2017赛季场均31.6分、10.7篮板、10.4助攻,成为继奥斯卡·罗伯特森之后第二位场均三双的球员,那个赛季他拿了42次三双,打破了大O保持了50年的单赛季三双纪录——41次。
我查了一下,1961-1962赛季的奥斯卡·罗伯特森场均30.8分、12.5篮板、11.4助攻,这数据放到今天依然是怪物级别的,但罗伯特森打了14个赛季,威少现在打了16个赛季,时间线上两人其实差不多,不过罗伯特森那个年代的节奏快、效率低,而威少这个年代的数据含金量更高,因为对手更强。
为什么三双王值钱?
我这么说吧,在Golang里写一个判断是否为三双的函数很简单:
func isTripleDouble(points, rebounds, assists int) bool {
return points >= 10 && rebounds >= 10 && assists >= 10
}
但反过来想,要让三个数据同时上双,而且是在48分钟的比赛里,你得有多强的全面能力?这就是三双记录的价值所在:它证明了球员的全能性。
拿约基奇举例,他今年才30岁,已经拿了130次三双,按照现在的速度,到35岁左右真的有可能威胁威少的纪录,但约基奇和威少完全是两种风格——约基奇用他的传球智慧和超高的篮球智商去刷数据,而威少用他的爆发力和拼劲,这就像Golang中的sync.Map和普通map加锁的区别,前者在并发情况下性能更好,后者就简单粗暴。
还有一个有趣的点,如果你把三双数据放到Golang的sort.Slice里跑一遍,你会发现:
- 得分助攻型三双:比如卢卡·东契奇,他用的是慢节奏、强身体对抗的打法
- 篮板助攻型三双:约基奇的中锋位置让他天生容易拿篮板
- 全能型三双:威少、詹姆斯这种,三个都能做
威少的数据分布是最均匀的,他生涯场均三双赛季的平均得分是31.6分、10.7篮板、10.4助攻,几乎达到一个完美的平衡,这就像一个没有缺陷的Golang结构体,字段不多不少,每个都有用。
一点个人想法
以前我总觉得数据只是数据,但当你用Golang去处理威少的数据时,你会发现数字背后有一种节奏感——他的三双不是随机出现的,而是集中在某个时间段,比如2016年到2020年,他几乎每两场比赛就有一个三双,这就像你在写代码时找到了一个pattern,知道在某个条件下性能最好,然后不断重复那个过程。

威少并不完美。 他的三分命中率只有30%左右,他的失误高居不下,他带队的季后赛成绩也不出彩,但这恰恰是真实的人生——我们写Golang代码的时候不也是这样么?即使代码跑通了,也会有各种不完美,但重要的是,当机会来临时,你愿意去尝试那个突破。
最后说个事情,我写Golang代码的时候总会留一个TODO注释,提醒自己哪天回来改,威少现在还在打球,他的记录还在增加,也许今年他还是那个冲击三双的威少,也许明年他就退役了,但就像代码库一样,你永远不知道下一个commit会不会改变一切。
行了,不扯了,我的代码又报错了,但没事,威少的记录还没断,我也可以。
本文来自作者[kyadmin]投稿,不代表ac米兰官网立场,如若转载,请注明出处:http://www.milanatour.com/nba/1210.html
评论列表(4条)
我是ac米兰官网的签约作者“kyadmin”!
希望本篇文章《用Golang聊聊NBA历史三双王,威少是怎么把数据刷成艺术的?》能对你有所帮助!
本站[ac米兰官网]内容主要涵盖:AC米兰,ac米兰中文,AC米兰官网
本文概览:写这篇文章的时候,我正盯着Golang的编译器发呆,其实我脑子里想的是另一件事——前两天刷到威少又拿了一次三双,那感觉就像我在写Gola...