鱼C论坛

 找回密码
 立即注册
查看: 2929|回复: 6

[技术交流] 第21讲习题代码以及分析

[复制链接]
发表于 2014-8-1 15:55:07 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 mumudontcry 于 2014-8-2 02:37 编辑

第一行喂@小甲鱼  ,第二行开始
题目我还是不说了
(免责声明:要先好好看小甲鱼的好不啦,全让我说了,人家干什么去,再说把题目弄过来,小甲鱼的10鱼币就赚不了啦)

这一讲视频结束后,我哪里学会了什么lambda(懒巴达)啊,我整个人就是“斯巴达”啦
为什么呢?看第一张图,这是木木的测试题的答案
4,5题我直接放弃了
估计各位也跟我差不多吧(如果不是,那就说明,木木真的好笨
既然都错的一塌糊涂,我应该没有脸出来了吧,不……就算整个世界崩塌,就算错再多又怎么样,我还是要继续向前


我不甘心啊!我决定怎么说还是要把小甲鱼的答案看懂了,再跟大家分析一下,毕竟小甲鱼的答案解析太……粗糙了
问题是,我还是没看懂,直到……


看图二,这个是我在看小甲鱼视频的时候做的笔记,我看到了一句话,于是所有的问题瞬间豁然开朗,对,就是那句话:
map(),映射,把后面参数代入到函数里,返回所有执行后的值
(这句话跟我看没看懂还有下面的内容到底什么关系,我也不知道,反正我当时就是因为看到这句话才瞬间懂了的)

这里有三个很重要的知识点——列表推导式、lambda和filter(map),它们分别长成这个样子
1、列表推式:i for i in range(1, 100) if not(i%3)
2、lambda:lambda n : not(n%3)
3、filter:filter(lambda n : not(n%3), range(1, 100))
坑爹呐这是,这就是随便复制下来的吧!
嗯……第四题说了:“还记得列表推导式吗?完全可以使用列表推导式代替filter()和lambda组合,你可以做到吗?”


所以我把这三个放在这里,对比着跟大家讲
首先是filter,根据filter的定义,有filter函数自变量
函数就是lambda,lambda函数里包括了 lambda n:,以及not(n%3),其中,红字代表返回值,紫字代表函数体内的语句,这里是一个条件句(请无视上面的单个的红色汉字)
这里的lambda n作为返回值(相当于一个数学函数y =f(x)的f(x)),里面又有一个n作为自变量(这是lambda的定义),而n恰好又是filter里的自变量
为了更清楚一点:
y =f(x)类比于
lambda n作为整体看 = lambda n分开看

由上面的分析知道,这个filter就是:

filter(lambda n : not(n%3), range(1, 100)) = filter(lambda n : not(n%3), range(1, 100))………………(*)



至于列表推式写成这种有颜色的,就是:i for i in range(1, 100) if not(i%3)

是不是被我这么分析绕得头昏眼花了?没事

大家记住这三种颜色的式子以及(*)就可以了:
filter函数自变量)map类似
lambda 自变量 : 函数体
i for i in range(1, 100) if 函数体
所以,在写第五题的时候,我们可以这样:
a、是筛选还是返回所有?返回所有,选择map():map(留空 , 留空)
b、自变量(形参)是什么?x和y,于是:map(lambda x , y : 留空 , 留空)
c、函数体内的语句是什么?是return [x,y],返回一个[x,y],所以:map(lambda x , y : [x,y] , 留空)
d、自变量怎么取值?有两个,一个是x =[1, 3, 5, 7, 9],一个是y = [2, 4, 6, 8, 10]。所以:map(lambda x , y : [x,y] , [1, 3, 5, 7, 9] ,[2, 4, 6, 8, 10])
最后print一下

只要对照(*)按颜色分步骤写,就可以很容易写出来
ps:filter里淡蓝色的两个你可以合起来认为是赋值语句

filter是返回经过函数体后值为True的元素,map是返回所有经过函数体处理过后的元素,所以,返回的是什么要注意

当然,以上解释我觉得并不好,写出来只是对那些像一开始的我一样,会各种晕乎乎的人做一个参考。想要更清楚了解这部分内容,我建议还是自己去找到相关的手册(比如:http://bbs.fishc.com/thread-35632-1-1.html)仔细阅读,论坛不是学习的地方,是交流的地方,学习要靠自己
如果你有更好的理解或者解释,请告诉木木,当然,傲娇的木木是绝对不会听取这些意见或者建议的


6
是我自己看错了,字符串*数字 = 数字倍的个数的字符串连续输出,就好比print('a'*2)输出的是aa,而不是a换行a
至于为什么是16和两个FishC,请参考第20讲习题代码以及分析(一)的解释


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
点击
当没节操甲鱼遇上傲娇笨笨的木木
查看我的淘帖,喜欢就点“订阅”吧






QQ截图20140801141719.png
QQ截图20140801142701.png

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-8-2 02:17:11 | 显示全部楼层
今天木木要睡觉去了
(从下午1点睡到7点,吃了饭,又从7点睡到10点,醒来看了下时间,继续睡,到了现在2点,嗯……睡觉去)
不然木木会变老啦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-8-2 10:35:09 | 显示全部楼层
跟着楼主的进度学python
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-8-2 10:36:23 | 显示全部楼层
很好奇楼主学python的原因是什么,感觉没什么学习压力

是在校大学生吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-8-2 10:42:12 | 显示全部楼层
wangerwanger 发表于 2014-8-2 10:36
很好奇楼主学python的原因是什么,感觉没什么学习压力

是在校大学生吗?

毕业了,觉得p好玩
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-8-2 10:44:10 | 显示全部楼层
mumudontcry 发表于 2014-8-2 10:42
毕业了,觉得p好玩

哦,工作中也不用到?

就是纯兴趣吗,佩服佩服!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-8-2 10:58:16 | 显示全部楼层
本帖最后由 mumudontcry 于 2014-8-2 11:04 编辑
wangerwanger 发表于 2014-8-2 10:44
哦,工作中也不用到?

就是纯兴趣吗,佩服佩服!!!

刚毕业,没找工作中,过几天就直接去朋友那里工作,不过用不到p就是了
我一直都觉得有句话说的特别好,如果你想要毁掉一样东西,那么你就让这个东西成为你生活里的一部分(这谁这么无聊说这样没有道理的话啊?嗯……我自己)
如果我真的喜欢p的话,我绝对不会找跟p有关的工作,因为我在做了那份工作之后一定会觉得,p不再是我以前认为的p,毕竟工作跟学习不一样,工作里真的用p的话,绝对是把它作为一种硬梆梆的的毫无感情的工具,慢慢的我一定会讨厌它!
就比如说,我把女朋友照片作为手机壁纸,作为电脑壁纸,作为所有的壁纸,总有一天,我看着她,我就会吐,我就会厌烦,然后当面见到她,我也会不耐烦,所以我才不会把她作为我的壁纸
……
木木的壁纸就是win7的自带的蓝色的经典壁纸

兴趣……不知道怎么说,你看我就算不写这个帖子,我还是会做笔记,我也不知道这个是不是兴趣,说不定哪天我就不想学了,但既然学了,我觉得还是学完,再丢(- -这……),这样我在别人面前就不会是:
别人:p你会么?
我:会,忘了
别人:balabalabala……这个听过么?
我:没有
别人:那你还说你会,忘了我不知道是不是真的,但你连这个见都没见过,那肯定就没学好甚至没学
如果是上面的情况,我会觉得好惭愧,因为我居然见都没见过(说不定他是来找茬的,但我还是不好意思)
如果是:
我:以前还做过这个,我现在真的是忘了
别人:骗人,自己没学过就直说
我:爱信不信
虽然别人还是觉得我没有学过,但至少我自己不会惭愧了,我是有好好学的,只是忘了,嗯……只是忘了
所以重点就是:木木还没有女朋友啊有好心人就收了木木吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-24 14:46

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表