python三大基础函数
在Python中有三个基础函数,分别是filter()、map()和reduce(),他们分别为我们提供过滤、映射和聚合的功能。
1. filter()函数
在数据筛选和过滤的时候我们通常会采用filter()函数帮助我们快速的解决问题,它的语法格式为:
1
|
filter (函数,可迭代对象) |
在filter函数中,前面放我们的过滤或筛选方式,即函数名,后面存放可迭代的对象,我们看下面的例子:
1
2
3
4
5
|
def test(x): if x % 2 = = 0 : return x my_list = [ 1 , 2 , 3 , 4 , 5 , 6 ] print ( filter (test,my_list)) #只需要些函数名即可,不用加参数 |
输出结果:
1
|
< filter object at 0x034C2DD8 > |
关于这个例子,我们首先定义了一个test()函数,如果x是偶数则返回其值,然后通过filter()函数使用test()函数来过滤my_list列表,但是输出结果却是<filter object at 0x034C2DD8>,在这里我们需要注意filter()函数的返回值为一个可迭代的对象,我们需要通过迭代的方式访问其中的值,或者使用列表list()函数强制类型转换。
1
2
3
4
5
6
7
8
|
def test(x): if x % 2 = = 0 : return x my_list = [ 1 , 2 , 3 , 4 , 5 , 6 ] print ( filter (test,my_list)) for i in filter (test,my_list): print ( '迭代后中的数据:' ,i) print ( '使用list()方法:' , list ( filter (test,my_list))) |
输出结果为:
1
2
3
4
|
迭代后中的数据: 2 迭代后中的数据: 4 迭代后中的数据: 6 使用 list ()方法: [ 2 , 4 , 6 ] |
2. map()函数
在前面我们曾多次使用到过map()函数,例如我们在输入多个值的时候,我们会采用map()函数,我们需要输入四个值的时候:
1
2
|
a,b,c,d = map ( int , input ().split()) print (a,b,c,d) |
map()函数的语法格式为:
1
|
map (函数,可迭代对象) |
在使用map()函数的时候,我们大多用于对数据的处理,把可迭代对象中的数据经过函数处理之后存储,我们在存储的时候继续采用list()函数进行存储。
我们先看上面输入四个值的例子,int为函数,input().splite输入的值为可迭代的对象,经过int函数的处理后存放在map对象当中。
我们可以通过map()函数将一个序列中的所有数据通过一个函数进行处理,看下面的例子:
我们在一个列表中存放了一下字母,如果存在小写字母,那么将它变成大写字母。
代码如下:
1
2
3
4
5
6
7
|
def test(x): if x.islower(): return x.upper() else : return x my_list = [ 'd' , 'o' , 't' , 'C' , 'p' , 'P' ] print ( list ( map (test,my_list))) |
输出结果为:
1
|
[ 'D' , 'O' , 'T' , 'C' , 'P' , 'P' ] |
test()函数中会先对x进行判断,如果是小写字母就返回它的大写字母,如果不是小写字母就返回它的值。
3. reduce()函数
reduce()函数用于把可迭代的对象通过函数方法进行聚合。
语法格式为:
1
|
reduce (函数, 可迭代对象[, 初始值]) |
举个例子,我们已知一个列表为[1,2,3,4],我们需要求列表里所有项依次相乘的和,我们可以使用reduce()函数。
1
2
3
4
5
|
from functools import reduce #reduce函数在functools模块中定义,需要引入 def test(x,y): return x * y my_list = [ 1 , 2 , 3 , 4 ] print ( reduce (test,my_list)) |
输出结果为:
第一行代码为引入这种方法,后面会对模块进行讲解,test()函数返回了两个数据相乘,然后通过reduce()函数将my_list列表处理。
处理过程如下图:
先执行第一步,然后得到一个结果再和后一项相乘,依次到最后一位。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?