python与数据思维基础答案_7个python案例中的数据思维

今天我们也来说下python的7个案例。重点是这些案例反映的思维,在我看来,代码也是思维的一种良好体现

我记得上大学C语言的时候,有个题目是a,b两变量的数据交换。当是我给出的答案是

a,b=b,a,结果惨被打脸。就大部分编程语言而言,这样一个小小的需求,基本上都要通过中间变量去实现。而对于python,a,b=b,a这种写法就已经满足。其实随着学python的深入,会发现这门语言跟人的直觉思考方式非常相似。不信我们来看7个案例

1、计算1+2+…+100的和

普通实现:for循环累计,至少3行代码

Python实现:print(sum(range(1,101)))

解析:

sum函数在无参时,不管内部是什么都是全部相加(range返回的并不是列表,而是自身的对象,这都不重要),所以用一行代码就可以实现。

比如print(sum([1,2],[3,4])),返回值会是10。有没有发现,这种实现方式跟你大脑里面的初步逻辑:1,2,…100先罗列出来,然后直接相加就行了很像。这个过程中不需要用到循环,没学过编程的人也不可能想到循环

2、输入列表[1,2,3,4,5],希望能实现输出是[1,4,9,16,25]

普通实现:先定义一个函数实现平方功能,再for循环调用,至少5行代码

Python实现:

print(list(map(lambdax:x**2,[1,2,3,4,5])))

解析:将平方函数一次性映射与每一个元素,是不是很符合函数的本质,高中的时候,我们学过,函数即直接映射,我们压根不用关心该函数的名称,只需要知道功能就行,是不是很简单粗暴有效。所以python强大就强大在这些地方:各种函数库,你要做的就是搬过来

3、列表[[1,2,3],[4,5,6],[7,8,9]]所有子集展开,输出为[1,2,3,4,5,6,7,8,9]

普通实现:通过索引来实现

Python实现:

print([ jfor i in [[1,2,3],[4,5,6],[7,8,9]] for j in i ])

解析:一层一层分解,先把第一层取出来,看有哪些元素,在此基础上重复操作一次,压根不需要索引。作为分析师,学会对问题进行识别,然后用一些生活中的方法论去解决尤为重要。最怕的就是问题还没想清楚,就直接用户分群聚类(这种情况我见到太多,不想当面吐槽),兄弟,赶紧去面壁

4、x="abc",y="def",z=["d","e","f"],分别求出x.join(y)和x.join(z)返回的结果

解析:

两者的返回值是一样的,都是dabceabcf,join函数能够将列表、元组、字符串中的元素直接进行拼凑,非常好用和人性化。我想到了我第一款正式数据分析软件是SAS,那个时候经常为各种文件格式、变量格式头疼不已,光sas导入文件可能就有各种bug,非常头疼,但还是用了好几年。我们在工作的过程中,往往会形成一种惯性:明明某个业务很有问题,但总是有借口去选择不解决;明明发现自己的分析思路不太体系化,只要能满足当前需要,就选择忽视它。对于分析师产品运营,一直在做业务的优化优化,但如果你自身都没有优化好,你怎么能把工作做的更好。

5、打印出杨辉三角前十行

程序及答案:

解析:

该案例本身的问题非常清晰,难就难在问题的拆解阶段:怎么样去简洁实现杨辉三角。这里用到了两个基础但很混淆知识点,1是列表的+操作是添加,map函数是对列表的每个元素进行操作,而不是列表整体。可以看出,要想进行良好的问题拆解,必须要有扎实的基本功。最近有一位同学遇到一个问题:注册购买率同比下降,而他在看分子分母各自的影响值,这就暴露出问题的拆解阶段需要加强。所以当遇到一个明确的业务问题而无从下手时,就已经说明你对业务的理解要加深:体验产品入手,然后看指标体系,再去和业务沟通。

6、计算2+22+222+2…2222,多少个2由输入控制

解析:

该问题肯定是用循环来解决,难点就是在于怎么样去有效的累积每一个因子。

这里利用小小的字符串相加就很好的实现了每一次的拼接。所以不要小看任何一个知识点。在数据分析中,数据异常是最考验分析师的零散知识点理解深入度。比如趋势异常:你看的是多久趋势,能不能这样环比同比,真的是异常吗。很多时候不是问题多复杂,而是思维固化。最近我也在和很多研发同学聊一些数据异常,他们的反馈是:数据分析师这个思维力太强了,能够打的很开,很快定位到问题

7. 企业发放的奖金根据利润提成。

利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?

解析:

按照一般的编程逻辑,肯定是通过if elif来分段实现,这是最好理解和最通俗的做法。不过:作为一名分析师,我们的代码、ppt、excel、专题报告还是要有专业度的,所以既要能实现需求,还要能满足审美要求。

这里通过增加辅助列表来实现。实际上,借助额外辅助这种思维非常非常常见。上次文案中的图表制作,就用到了很多辅助线。我们高中做立体几何的时候经常画各种虚拟线,也是这种思想。所以无论你的职位是什么,思维都是想通的,也是需要训练的

好的,今天对python的初步讲解就到这里。顺便提下:上面的代码如果你不太理解,那就先记住他,任何一门学科都是需要记忆力的,而这个也是可以训练的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
50个程序案例 程序1:数字组合 2 程序2:猜猜这个数是多少? 3 程序3:判断这是一年的第几天? 3 程序4:判断整数大小 4 程序5:斐波那契数列 5 程序6:水仙花数 6 程序7:数字求和 6 程序8:平方根 7 程序9:if语句 8 程序10:阿姆斯特朗数 8 程序11:输出指定范围的素数(else语句) 9 程序12:生成日历 10 程序13:统计字符串的字符 11 程序14:文件的读取 12 程序15:十进制转二进制、八进制、十六进制 13 程序16: 生成10个两位的随机素食 13 程序17: 计算三角形面积 14 程序18:字符串大小写转换 15 程序19: 获取昨天日期 16 程序20: 变量交换 17 程序21: 质数判断 17 程序22: 简单计算器 18 程序23: 最大公约数 20 程序24: 最小公倍数 21 程序25: 字符串判断 22 程序26: 合并文件数据 23 程序27: 猜数游戏 24 程序28:为数据加密 25 程序29:平方运算 26 程序30: 计算0-7组成的奇数个数 27 程序31:求值 27 程序32:猴子分桃 28 程序33:淘汰游戏 28 程序34:分解质因子 29 程序35:取整数右端的4~7位 30 程序36:判断4位回文数 31 程序37:汉诺塔(递归函数) 32 程序38:判断闰年 33 程序39:寻找自幂数(38) 34 程序40:多维数据 35 程序41: 验证哥德巴赫猜想 36 程序42: 解方程 37 程序43: 异常处理 38 程序44: 统计不及格人数(continue语句) 39 程序45: 求直角三角形的斜边 39 程序46: 问年龄 40 程序47:求相同数字的和 41 程序48:找出1000以内的所有完数 42 程序49:公民类 42 程序50:复数类 43
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值