Python 常用内置高阶函数map \ filter \ reduce

本文介绍了Python中的三个内置高阶函数:filter、map和reduce。filter函数用于过滤序列,返回符合条件的元素;map函数根据给定函数对序列做映射;reduce函数对序列元素进行累积操作。示例中展示了如何使用lambda匿名函数和自定义函数配合这些函数进行操作,包括列表过滤、元素映射和序列求和。

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

Python 内置高阶函数

一、filter函数

1、用途:filter()函数用于过滤序列,过滤掉不符合条件的元素,返回符合条件的元素组成新列表。

2、语法: filter(function,iterable)

3、参数: function 是函数,用于判断条件
iterable 表示可迭代对象

4、使用lambda方法(lambda函数表示匿名函数)
例:print(*(filter(lambda x:x%2==1,[1,2,3,4,5,6,7,8,]))
匿名函数lambda给出的是筛选条件,filter函数将传入的函数依次作用到序列的每个元素,True则返回,False则不返回

5、使用自定义函数(非匿名函数):
步骤:1、定义自定义函数——作为判断条件函数(filter函数会将该函数的判断作用于每一个元素
2、自定义函数作为参数传递给 filter 函数,不需要再给自定义函数传递参数,因为filter函数会自动给自定义函数传递可迭代对象中的元素
例如:

def select(x):
    if x%2==0 :    #此处条件可以更改,根据所需要的判断条件进行编写
        return x
 #此处在print函数调用filter函数时使用 * 号的原因是:filter函数得到的是可迭代序列,作为参数传递给print函数,所以需要使用* 来表示元组可变长参数       
print(*filter(select,[1,2,3,4]))
#用list方法代替 * 来使用 filter 函数,可以直接将filter函数得到的可迭代序列变成 list (列表)形式
print(list(filter(select,[1,2,3,4,5,6])))

运行结果:
2 4
[2, 4, 6]

还是公司股本

二、map函数

1、用途:根据给定的函数对指定的序列做映射
2、语法: map(function,iterable,...)
3、参数:function 表示函数,用于做映射
iterable 表示一个或多个序列
4、使用 lambda 方法

print(*map(lambda x: x%2==1,[1,2,3,4,5]))

该使用中变成了判断对错的条件,只打印 True和False, 并且形成一个可迭代序列

print(*map(lambda x: x*=2, [1,2,3,4,5])

该使用中使用lambda匿名函数对指定序列做映射,得到的是一个由原来的元素乘于2的序列)

5、使用自定义函数(非匿名函数)
步骤:
1、定义函数——作为映射函数,map函数会使用该函数对指定序列做映射
2、传递函数——将自定义函数作为参数传递给map函数,此时不需要再对自定义函数传递参数,因为map函数会自动将序列中的元素传递

例如:

def transfer(x):
    return x*2    #所做的更改可以在这里编写
    
#此处在print函数调用map函数时使用 * 号的原因是:map函数得到的是可迭代序列,作为参数传递给print函数,所以需要使用* 来表示元组可变长参数
print(*map(transfer,[1,2,3,4,5,6]))
#用list方法代替 * 来使用 map 函数,可以直接将map函数得到的可迭代序列变成 list (列表)形式
print(list(map(transfer,[1,2,3,4,5])))


运行结果:
2 4 6 8 10 12
[2, 4, 6, 8, 10]

三、reduce函数

1、reduce() 函数会对参数序列中元素进行累积。
函数将一个数据集合(链表,元组等)中的所有数据进行下列操作:用传给 reduce 中的函数 function(有两个参数)先对集合中的第 1、2 个元素进行操作,得到的结果再与第三个数据用 function 函数运算,最后得到一个结果。

2、语法:

reduce(function, iterable,...)

3、参数:function表示对迭代序列进行处理的函数
iterable表示一个或多个可迭代对象

4、使用lambda方法
实例:

from functools import reduce

def add(x, y) :            # 两数相加
    return x + y
sum1 = reduce(lambda x, y: x+y, [1,2,3,4,5])  # 使用 lambda 匿名函数
print(sum1)

5、使用自定义函数(非匿名函数)

from functools import reduce

def add(x, y) :            # 两数相加,可以更改
    return x + y
sum1 = reduce(add, [1,2,3,4,5])   # 计算列表和:1+2+3+4+5
print(sum1)

6、注意:Python3.x reduce() 已经被移到 functools 模块里,如果我们要使用,需要引入 functools 模块来调用 reduce() 函数:

from functools import reduce
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值