python: lambda, filter, map, reduce 用法

本文深入探讨了Python中的高阶函数,包括lambda匿名函数的创建及应用,filter函数用于筛选列表元素,map函数实现对列表元素的转换,以及reduce函数进行累积计算的过程。通过具体示例展示了这些函数如何简化代码并提高效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

lambda

创建一个匿名函数

>>> f = lambda a, b, c: a * b + c
>>> f(3,4,5)
17

匿名函数,函数内只能有一个表达式,不用写return,返回值就是该表达式的结果。a,b,c是接收的参数,a*b+c就是函数的返回结果。

filter

>>> my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> output_list = filter(lambda x: x > 5, my_list)
>>>> output_list
[6, 7, 8, 9]

返回my_list中符合过滤规则lambda x: x > 5的子集。

map

>>> my_list = [1, 5, 7, 8, 11]
>>> output_list = map(lambda x: x * x, my_list)
>>> output_list
[1, 25, 49, 64, 121]

将函数作用到my_list的每个元素。

>>> new_list = [-4, 3, 2, -6, 5]
>>> map(lambda x, y: x + y, my_list, new_list)
[-3, 8, 9, 2, 16]

可以接收多个list,2个以上的以此类推

reduce

>>> reduce(lambda a, b: a * b, my_list)

用给定的函数lambda a, b: a * b迭代处理my_list参数,得到一个值。

def func(x, y):
    print (x, y)
    return x + y
my_list = [1,2,3]
print 'result = %s' % reduce(func, [1,2,3])
(1, 2)
(3, 3)
result = 6

初始使用my_list中的前两个元素计算: 1+2,得到结果3
再使用上一部的结果3和下一个元素3再计算:3+3,得到结果6

def func(x, y):
    print (x, y)
    return x + y
my_list = [1,2,3]
print 'result = %s' % reduce(func, [1,2,3], 10)
(10, 1)
(11, 2)
(13, 3)
result = 16

也可以指定初始迭代值,如果有这个参数,那么第一个的计算就是10+1。

参考:
Understanding Filter, Map, And Reduce In Python

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值