python三大基础函数:filter()、map()和reduce()

2022-07-2920:48:15编程语言入门到精通Comments822 views字数 1892阅读模式

Python中有三个基础函数,分别是filter()、map()和reduce(),他们分别为我们提供过滤、映射和聚合的功能。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26204.html

上一节我们简单的使用了filter()函数结合匿名函数,下面我们会详细介绍它的用法。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26204.html

1. filter()函数文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26204.html

在数据筛选和过滤的时候我们通常会采用filter()函数帮助我们快速的解决问题,它的语法格式为:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26204.html

1
filter(函数,可迭代对象)

在filter函数中,前面放我们的过滤或筛选方式,即函数名,后面存放可迭代的对象,我们看下面的例子:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26204.html

1
2
3
4
5
def test(x):
    if % 2 == 0:
        return x
my_list = [1,2,3,4,5,6]
print(filter(test,my_list))#只需要些函数名即可,不用加参数

输出结果:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26204.html

1
<filter object at 0x034C2DD8>

关于这个例子,我们首先定义了一个test()函数,如果x是偶数则返回其值,然后通过filter()函数使用test()函数来过滤my_list列表,但是输出结果却是<filter object at 0x034C2DD8>,在这里我们需要注意filter()函数的返回值为一个可迭代的对象,我们需要通过迭代的方式访问其中的值,或者使用列表list()函数强制类型转换。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26204.html

1
2
3
4
5
6
7
8
def test(x):
    if % 2 == 0:
        return x
my_list = [1,2,3,4,5,6]
print(filter(test,my_list))
for in filter(test,my_list):
    print('迭代后中的数据:',i)
print('使用list()方法:',list(filter(test,my_list)))

输出结果为:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26204.html

1
2
3
4
迭代后中的数据: 2
迭代后中的数据: 4
迭代后中的数据: 6
使用list()方法: [246]

2. map()函数文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26204.html

在前面我们曾多次使用到过map()函数,例如我们在输入多个值的时候,我们会采用map()函数,我们需要输入四个值的时候:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26204.html

1
2
a,b,c,d = map(int,input().split())
print(a,b,c,d)

map()函数的语法格式为:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26204.html

1
map(函数,可迭代对象)

在使用map()函数的时候,我们大多用于对数据的处理,把可迭代对象中的数据经过函数处理之后存储,我们在存储的时候继续采用list()函数进行存储。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26204.html

我们先看上面输入四个值的例子,int为函数,input().splite输入的值为可迭代的对象,经过int函数的处理后存放在map对象当中。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26204.html

我们可以通过map()函数将一个序列中的所有数据通过一个函数进行处理,看下面的例子:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26204.html

我们在一个列表中存放了一下字母,如果存在小写字母,那么将它变成大写字母。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26204.html

代码如下:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26204.html

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)))

输出结果为:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26204.html

1
['D''O''T''C''P''P']

test()函数中会先对x进行判断,如果是小写字母就返回它的大写字母,如果不是小写字母就返回它的值。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26204.html

    3. reduce()函数文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26204.html

reduce()函数用于把可迭代的对象通过函数方法进行聚合。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26204.html

语法格式为:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26204.html

1
reduce(函数, 可迭代对象[, 初始值])

举个例子,我们已知一个列表为[1,2,3,4],我们需要求列表里所有项依次相乘的和,我们可以使用reduce()函数。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26204.html

1
2
3
4
5
from functools import reduce#reduce函数在functools模块中定义,需要引入
def test(x,y):
    return * y
my_list = [1,2,3,4]
print(reduce(test,my_list))

输出结果为:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26204.html

python三大基础函数:filter()、map()和reduce()文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26204.html

第一行代码为引入这种方法,后面会对模块进行讲解,test()函数返回了两个数据相乘,然后通过reduce()函数将my_list列表处理。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26204.html

处理过程如下图:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26204.html

python三大基础函数:filter()、map()和reduce()文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26204.html

先执行第一步,然后得到一个结果再和后一项相乘,依次到最后一位。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26204.html

4. 总结文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26204.html

这三种函数我们常用的为前两者,熟练掌握这三个函数能够帮助我们解决一系列复杂的问题,下一节我们来学习递归函数。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26204.html

  • 本站内容整理自互联网,仅提供信息存储空间服务,以方便学习之用。如对文章、图片、字体等版权有疑问,请在下方留言,管理员看到后,将第一时间进行处理。
  • 转载请务必保留本文链接:https://www.cainiaoxueyuan.com/ymba/26204.html

Comment

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定