Python高阶函数详解:Lambda、Map、Reduce与Filter用法
本文详解Python中几种核心高阶函数的用法与区别。通过Lambda表达式定义匿名函数,结合Map进行元素映射,利用Reduce实现累加运算,并使用Filter执行条件过滤。文章包含具体代码示例,解析各函数的参数结构、执行逻辑及多参数并行处理特性,帮助开发者掌握函数式编程技巧。
几个特殊的函数(待补充)
Python支持多种编程范式,其中包括函数式编程。其核心体现为几个关键函数:filter、map、reduce、lambda以及yield。
Lambda表达式
>>> g = lambda x,y:x+y #x+y,并返回结果 >>> g(3,4) 7 >>> (lambda x:x**2)(4) #返回4的平方 16
Lambda函数的基本使用方式如下:
在lambda关键字后直接跟随变量定义。
变量定义之后使用冒号分隔。
冒号后跟随表达式,该表达式的计算结果即为函数的返回值。
冒号后跟随表达式,该表达式的计算结果即为函数的返回值。
例如,若需生成一个列表,其中包含某数字的1次方至4次方,可使用lambda实现:
>>> lamb = [ lambda x:x,lambda x:x**2,lambda x:x**3,lambda x:x**4 ] >>> for i in lamb: ... print i(3), ... 3 9 27 81
Map函数
map()是Python的内置函数,其基本语法格式为:
map(func, seq)
其中func代表一个函数,seq代表一个序列对象。执行时,序列中的元素按从左到右顺序依次取出,
传入func函数进行处理,并将func返回的结果依次存入一个列表中。例如:
>>> items = [1,2,3,4,5] >>> squared = [] >>> for i in items: ... squared.append(i**2) ... >>> squared [1, 4, 9, 16, 25] >>> def sqr(x): return x**2 ... >>> map(sqr,items) [1, 4, 9, 16, 25] >>> map(lambda x: x**2, items) [1, 4, 9, 16, 25] >>> [ x**2 for x in items ] #这个我最喜欢了,一般情况下速度足够快,而且可读性强 [1, 4, 9, 16, 25]
关键点:
对iterable中的每个元素,依次应用function方法(本质上等同于for循环)。
将所有处理结果返回为一个list。
若提供多个参数,则对这些参数并行执行function。
继续参考以下两个示例:
>>> lst1 = [1,2,3,4,5] >>> lst2 = [6,7,8,9,0] >>> map(lambda x,y: x+y, lst1,lst2) #将两个列表中的对应项加起来,并返回一个结果列表 [7, 9, 11, 13, 5]
>>> lst1 = [1,2,3,4,5] >>> lst2 = [6,7,8,9,0] >>> lst3 = [7,8,9,2,1] >>> map(lambda x,y,z: x+y+z, lst1,lst2,lst3) [14, 17, 20, 15, 6]
由此可见map函数的强大与简洁。若使用for循环实现相同功能,代码将显得更为繁琐。
Reduce函数
直接参考示例:
>>> reduce(lambda x,y: x+y,[1,2,3,4,5]) 15
reduce函数的计算方式是将列表元素进行累加,计算过程为((((1+2)+3)+4)+5)=15。与map函数相比,map侧重于逐元素映射(上下运算),而reduce侧重于逐个元素间的累积运算(横向运算)。
reduce函数可接受第三个参数作为初始值:例如:
>>> reduce(lambda x,y: x+y,[1,2,3,4,5],100) 115
上述列表的计算将以100为初始值执行累加,首先计算100+1。
Filter函数
filter的中文含义为“过滤器”,在Python中,它起到过滤数据的作用。
通过以下代码进行体会:
>>> numbers = range(-5,5) >>> numbers [-5, -4, -3, -2, -1, 0, 1, 2, 3, 4] >>> filter(lambda x: x>0, numbers) [1, 2, 3, 4] >>> [x for x in numbers if x>0] #与上面那句等效 [1, 2, 3, 4] >>> filter(lambda x: x > 3, [1,2,3,4,5]) [4,5]
参考filter的官方文档解释:
filter(...) filter(function or None, sequence) -> list, tuple, or string Return those items of sequence for which function(item) is true. If function is None, return the items that are true. If sequence is a tuple or string, return the same type, else return a list.
总结
以上就是本文关于简单了解Python中的几种函数的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站:Python算法输出1-9数组形成的结果为100的所有运算式、Python生成数字图片代码分享等,有什么问题可以随时留言,小编会及时回复大家的。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









