|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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讲习题代码以及分析(一)的解释
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
点击
当没节操甲鱼遇上傲娇笨笨的木木
查看我的淘帖,喜欢就点“订阅”吧
|
-
-
|