lambda函数就是我们常说的匿名函数,就是不用定义函数名,lambda更像是一个表达式,限制了程序的嵌套,是一个为编写简单的函数而设计的。
1、简单运算
1)、求几个数的和
1 2 3 4 | >>> f = lambda x,y,z : x+y+z >>> f(1,2,3) 6 |
---|
2)、对列表进行排序
1 2 3 | >>> num = [1,24,46,35,1,4,7] >>> sorted(num,key=lambda x : x ) [1, 1, 4, 7, 24, 35, 46] |
---|
3)、求几个值的平方
1 2 | >>> list(map(lambda x : x*x,range(1,10))) [1, 4, 9, 16, 25, 36, 49, 64, 81] |
---|
map函数的用法:
1 2 | map(function,sequence) 把sequence中的值当做参数逐个传给function,这里的map(lambda x : x*x,range(1,10))就是将1到9这九个参数传递给lambda这个函数。 |
---|
4)、找出一组数中的偶数
1 2 | >>> list(filter(lambda x : x % 2 == 0,range(1,21))) [2, 4, 6, 8, 10, 12, 14, 16, 18, 20] |
---|
fileter()函数用法:
1 2 3 4 5 6 7 8 9 10 11 | filter(function,sequence) 对sequence中的item依次执行function(item),将执行结果为True的item组成一个List/String/Tuple返回。 这里的fileter(lambda x : x % 2 == 0,range(1,21)),执行过程如下: 1 % 2 != 0 False 2 % 2 = 0 True 3 $ 2 != 0 False ... ... ... 20 % 2 = 0 True 执行结果为True的会返回 |
---|
5)、求1~100之和
1 2 3 | >>> from functools import reduce >>> reduce(lambda x,y : x + y,range(1,101)) 5050 |
---|
reduce()函数用法:
1 2 3 4 5 6 7 8 | reduce(function,sequence) reduce中的函数每次只能接收两个参数,先是把sequence中第一个值和第二个值传递给function,然后再把function的结果和sequence的第三个值作为参数再传递给function,过程如下: 1 + 2 = 3 3 + 3 = 6 6 + 4 = 10 ... ... ... |
---|
2、闭包
闭包:一个定义在函数内部的函数,闭包使得变量即使脱离了该函数的作用域范围也依然能被访问到。
也就是说,我们定义了一个函数,该函数中包含了一个lambda函数,例如:
1 2 3 4 5 6 | >>> def f(x): ... return lambda y : y + x ... >>> g = f(1) >>> g(9) 10 |
---|
3、默认参数
1 2 3 4 5 6 7 | >>> x = (lambda a='fee',b='fie',c='foe' : a + b + c) >>> x('wee') 'weefiefoe' >>> x('fei') 'feifiefoe' >>> x('hello','world','python') 'helloworldpython' |
---|