欢迎关注天善智能,我们是专注于商业智能BI,人工智能AI,大数据分析与挖掘领域的垂直社区,学习,问答、求职一站式搞定!
对商业智能BI、大数据分析挖掘、机器学习,python,R等数据领域感兴趣的同学加微信:tstoutiao,邀请你进入数据爱好者交流群,数据爱好者们都在这儿。
作者: 张小鸡 Python爱好者社区专栏作者
知乎ID:https://www.zhihu.com/people/mr.ji
个人公众号:鸡仔说
网上有一个经典的算法入门题:
![3901436-01023a160d657131](https://i-blog.csdnimg.cn/blog_migrate/3a8b94acfcd002ed5fa2cafcb2bdfda2.webp?x-image-process=image/format,png)
虽然是个夸张的梗,但是也部分反映了一个现实,大部分的程序员童鞋(也包括我在内)是缺乏一定的数学素养的。一个常见的现象就像上面所展示的那样,看代码的时候贼顺溜,一看到数学部分就
![3901436-6734c03b8ac34c72](https://i-blog.csdnimg.cn/blog_migrate/cf797e9f8b9dbc0a29fe8b61a4ea9134.webp?x-image-process=image/format,png)
在重新学习了一段时间数学基础后,我发现,数学本身的逻辑其实并非复杂到让人难以理解的程度。而最大的坎恐怕就是其中犹如天书般的数学符号吧?基于此,我想整理一个基于代码的数学符号释义,由于我本身的知识水平限制,若出现了部分错误,还希望各位Ladies和乡亲们海涵并指出。另,本文长期更新,欢迎大家补充和收藏。
![3901436-03b2eca43610623f](https://i-blog.csdnimg.cn/blog_migrate/b6f611b67fdce0e9d16515db3355de7a.webp?x-image-process=image/format,png)
含义:多项数之和
中文:西格玛
英文:sigma
小写:σ
![3901436-fa3cd20e7dcb3431](https://i-blog.csdnimg.cn/blog_migrate/b78a82ba4ab97d8f0957be75f912c702.webp?x-image-process=image/format,png)
代码释义:
defsigmod(i, n):# Σ 多项数求和ifnotisinstance(i,int)ornotisinstance(n,int):returnFalsereturnreduce(lambdax, y: x+y,range(i, n+1))
![3901436-959bebf2bf883722](https://i-blog.csdnimg.cn/blog_migrate/1e9c9b2fc16198c24188ef7aad31240e.webp?x-image-process=image/format,png)
代码释义:
defdouble_sigmod(a, b, i, j, func=None):ifnotisinstance(a,int)ornotisinstance(b,int)ornotisinstance(i,int)ornotisinstance(j,int)ornotfunc:returnFalseresult=0forkinrange(a, b+1):forninrange(i, j+1): result+=func(n, k)returnresult
参考资料:
http://link.zhihu.com/?target=https%3A//www.quora.com/What-is-an-example-of-a-double-summation
![3901436-543df596fae7e160](https://i-blog.csdnimg.cn/blog_migrate/c9cf8b3caf7a51d07acfa80b1a52909b.webp?x-image-process=image/format,png)
含义:多项数连续乘积
中文:派
英文:pai
小写:π
![3901436-12917d069c9aff9e](https://i-blog.csdnimg.cn/blog_migrate/0f135b07e84359112e99436f0fe59749.webp?x-image-process=image/format,png)
代码释义:
defcontinue_multiply(i, n):''' Π 连乘 '''ifnotisinstance(i,int)ornotisinstance(n,int):returnFalsereturnreduce(lambdax, y: x*y,range(i, n+1))
No.3n!
含义:一个正整数的阶乘是所有小于及等于该数的正整数的积,并且0的阶乘为1。
中文:阶乘
英文:factorial
![3901436-ca9cf47d9e88f0e8](https://i-blog.csdnimg.cn/blog_migrate/01191ee787df57516649669337282f22.webp?x-image-process=image/format,png)
代码释义:
deffactorial(n):''' n! 阶乘 '''ifnotisinstance(n,int):return'Invalid data, please input a int number'ifn==0orn==1:return1else:returnn*factorial(n-1)
![3901436-4130a0904ba47307](https://i-blog.csdnimg.cn/blog_migrate/372865457152c3c528c9e7b7fcd64ed7.webp?x-image-process=image/format,png)
含义:从n个不同元素中每次取出m(n≥m)个不同元素,组合在一起(不关心顺序)
中文:组合
英文:combination
![3901436-a67110263ac7b334](https://i-blog.csdnimg.cn/blog_migrate/ffe1f28d31b6132564fbd7c7fedd2675.webp?x-image-process=image/format,png)
代码释义:
defcombination(iter=None, m=0):''' 从 n 中选出 m 个,进行组合 '''result=[] tmp=[0]*m length=len(iter)defnext_num(li=0, ni=0):ifni==m: result.append(copy.copy(tmp))returnforljinrange(li, length): tmp[ni]=iter[lj] next_num(lj+1, ni+1) next_num()return(result,len(result))
![3901436-f7f0a2fc36192d12](https://i-blog.csdnimg.cn/blog_migrate/a4380514b00af2e1c959f879d7e4af9f.webp?x-image-process=image/format,png)
含义:从n个不同元素中每次取出m(1≤m≤n)个不同元素,排成一列(有顺序要求)
中文:组合
英文:permutation
可以这么理解,从n个有标记的小球中,先取出来一个,然后再在接下来的n-1个元素中去除一个放到第二个位置,最后从n-m+1个元素中,取出一个放在第m个位置上
![3901436-97e26f41ffc8076a](https://i-blog.csdnimg.cn/blog_migrate/34db9c3de22c593039832b668739251f.webp?x-image-process=image/format,png)
代码释义:
(备注,我那个n中选择m个的算法还没搞出来,只实现了全排列,后续搞明白了再补充)
defpermutation(iter=None, n=0):''' 从 n 中选出 n 个,进行排列 '''result=[] tmp=[0]*ndefnext_num(arry, ni=0):ifni==n: result.append(copy.copy(tmp))returnforljinarry: tmp[ni]=lj arry_c=arry[:] arry_c.pop(arry.index(lj)) next_num(arry_c, ni+1) next_num(iter[:],0)return(result,len(result))
最后温馨提醒,本文会长期更新。也欢迎小伙伴补充更多不是很明了的数学公式,后续会继续完善。
另外,代码已经同步上传至GitHub,欢迎小伙伴follow和star:☞☞☞传送门戳这里:https://github.com/hacksman/MathematicalNotation
一道思考题:求1-100的和(要求时间复杂度最小,温馨提示:尽量使用数学知识)
作者其它好文推荐:当女票发来一套送命题,程序员应该怎么做?
Python的爱好者社区历史文章大合集:
福利:文末扫码立刻关注公众号,“Python爱好者社区”,开始学习Python课程:
![3901436-2c7b7ea5ab5e135f](https://i-blog.csdnimg.cn/blog_migrate/ad40007bb926ccc9e9c20153d0f2610c.webp?x-image-process=image/format,png)
关注后在公众号内回复“课程”即可获取:
小编的转行入职数据科学(数据分析挖掘/机器学习方向)【最新免费】
小编的Python入门免费视频课程!!!
小编的Python快速上手matplotlib可视化库!!!
崔老师爬虫实战案例免费学习视频。
陈老师数据分析报告制作免费学习视频。
玩转大数据分析!Spark2.X+Python 精华实战课程免费学习视频。
![3901436-0ddeb6bce8a8b5bd](https://i-blog.csdnimg.cn/blog_migrate/4643e370ce4fe818df2a28bf0acd59af.webp?x-image-process=image/format,png)