一、匿名函数lambdaPython中定义函数有两中方法,一种式用常规方式def定义,函数要指定名字。第二种式用lambda关键字定义,不需要指定名字,不需要指定名字,称为lambda函数。
lambda x, y : x+y
冒号左侧表示函数接收的参数,冒号右侧表示函数的返回值。可以给函数绑定一个名字,然后使用:
例1:
结果: 不过这样匿名就没意义了。一般不这么用。
一般与一些高阶函数配合使用。一个函数可以接收另一个函数作为参数,这种函数称之为高阶函数。 常见的高级函数有:sorted, filter, map, reduce等。
二、常用高阶函数2.1 sorted()sorted(iterable, key=None, reverse=False)
1.内置函数
2. key参数可以传入一个函数,该参数作为sorted的排序依据。即对iterable中的item依次执行key(item),将结果作为排序依据。【例4】【例5】
例1:
结果:
例2:
结果:
例3:
结果:
例4:
结果:
等价于:
例5:
结果:
2.2 max()max(iterable, *[, default=obj, key=func]) -> value max(arg1, arg2, *args, *[, key=func]) -> value
1. 参数可以为一个容器(字符串、列表、元组、字典、集合)【例1】, 也可以直接传入多个元素。【例2】 2. key参数可以传入一个函数,该参数作为sorted的排序依据。即对每一个元素item依次执行key(item),将结果作为排序依据。【例3】【例4】
例1: 结果:
例2: 结果:
例3: 结果: 也就是求最小值。
例4:
结果: 求和的最大值。
2.3 min()同max()
2.4 filter()
例1:求1-20之间的偶数
结果:
等价于: 结果:
2.5 map()
1. 可迭代对象:字符串、列表、元组、集合。range(5)也是,因为生成的也是可迭代对象。【例1】 2. map()函数提供了两个参数,即map(function,sequence1,sequence2)。。【例2】
例1:
结果:
等价于: map(lambda x:x**2, range(5)) 结果:
例2: 结果:
等价于:map(lambda x,y : x+y, [10,10,10], [1,2,3]) 结果:
例3:求一个序列的元素的绝对值 结果:
2.6 reduce()
即: res1 = func(第一个值,第二个值) res2 = func(res1, 第三个值) res3 = func(res2, 第四个值) ....
1. 在Python2中,reduce是内置函数。但在Python3中,在functools模块中。 2. 最后一个参数可选,为初始值
例:
结果:
|