Created
December 26, 2018 05:37
-
-
Save caoya171193579/891705422f07eeaea92f5be2b9bdc427 to your computer and use it in GitHub Desktop.
进阶
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
匿名函数: | |
lambda是快速定义单行的最小函数; | |
>>> x = lambda a,s:a*s #用lambda参数定义一个匿名函数x, 形参是a和s, 调用的时候取相乘的结果。 | |
>>> x(5,6) #实参 为 5和6 值为相乘 | |
30 | |
1、使用python写一些执行脚本时,使用lambda可以省去定义函数的过程,让代码更加精简。 | |
2、对于一些抽象的,不会别的地方在复用的函数,有时候给函数起个名字也是个难题,使用lambda不需要考虑命名的问题。 | |
3、使用lambda在某些时候让代码更容易理解。、 | |
不用使用return(语句)来定义 返回值 | |
用法 函数名=lambda 实参:怎么取值 x = lambda a,s:a*s | |
lambda 语句中,冒号前是参数,可以有个,用逗号隔开;冒号后面是返回值。 | |
lambda 语句构建的其实是一个函数对象: | |
>>> x = lambda a,s:a*s | |
>>> print x | |
<function <lambda> at 0x7fed6d3e8668> | |
#################################################### | |
>>> 8*7*6*5*4*3*2*1 #这叫阶乘, 8的阶乘,规律自己看 | |
40320 | |
>>> | |
lambda 应用实例 | |
使用内置参数(reduce #瑞丢思儿) 此参数为逐次操作列表里的每项,接受的参数为2个,最后返回的为一个结果 | |
>>> def x(a,s): #定义一个函数x,形参为 a,s | |
... return a*s #返回值为a乘以s | |
... | |
>>> l = range(1,6) #定义一个变量l ,值为1到5,五个整数,range 是用来定义整数的参数。 | |
>>> l | |
[1, 2, 3, 4, 5] # l 的值 | |
>>> reduce(x,l) # 内置参数reduce 形参未两个, 只会得到一个结果。 | |
120 | |
>>> x = lambda a,s:a*s # lambda 的用法在于 如果函数x 不会被重复使用,就用这一行代码代替会省去几行代码。 | |
>>> x | |
<function <lambda> at 0x7fed6d3e88c0> #x 被定义为函数对象。 | |
>>> reduce(x,l) | |
120 | |
>>> reduce(lambda a,s:a*s , l) #取参数内a乘以s的值,这里形参l是一个变量,我们想取的就是l的值的阶乘 1*2*3*4*5 的结果。 | |
120 | |
>>> reduce(lambda a,s:a*s , range(1,8)) #这里我们没有提前定义变量,直接用range参数调用1到7,7个整数来做阶乘,然后reduce参数返回最后的结果。 | |
5040 | |
多个例子 | |
>>> reduce(lambda a,s:a+s , range(1,8)) #1到7 相加 | |
28 | |
>>> reduce(lambda a,s:a-s , range(1,8)) #1-2-3-4-5-6-7 | |
-26 | |
>>> reduce(lambda a,s:a/s , range(1,8)) #1/2/3/4/5/6/7 =000000000 | |
0 | |
>>> reduce(lambda a,s:a==s , range(1,8)) | |
False | |
>>> reduce (lambda x,y:x*x+y*y , range(1,5)) ??? | |
1172 | |
>>> | |
>>> a = lambda s:s*s #定义一个变量a 取值等于相乘的结果 | |
>>> a | |
<function <lambda> at 0x7fed6d3e8938> | |
>>> a(9) | |
81 | |
>>> ss=reduce (lambda x,y:x*y , range(1,5)) | |
>>> ss | |
24 | |
>>> ss=reduce(lambda x,y:x+y,(1,2,3)) #不用range 参数的话,后面的整数要一个一个写出来。同range(1,4) 的结果是一样。 | |
>>> ss | |
6 | |
>>> ss=reduce(lambda x,y:x*y,(1,2,3,4,5)) | |
>>> ss | |
120 | |
>>> | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment