文章目录

  • 一、匿名函数
  • 二、map()函数
  • 三、reduce()函数
  • 四、filter()函数
  • 五、三大函数总结

本篇文章内容有Python中的匿名函数和map()函数、reduce()函数、filter()函数这三大封装函数(遍历处理),以及它们的使用案例。 文末是对这几个函数用法功能的比较。

一、匿名函数

该函数的用法类似于C语言中的宏定义,只是这个不需要定义名字,故叫匿名函数,但它们的作用都是用来提供一个简短的函数。

print(lambda x:x+1)  #打印匿名函数的内存地址
func1 = lambda x:x+1  #调用匿名函数第1步
func2 = lambda x,y:x*y  #两个参数的匿名函数
print(func1(10))    #调用匿名函数第2步
print(func2(4,130))   #需要传入两个参数以符合x,y
name = '鸣人'
func3 = lambda x:x + '——羊村村长'
print(func3(name))

运行结果:
<function at 0x02C07B70>
11
520
鸣人——羊村村长

二、map()函数

  1. 函数嵌套——把函数当做一个参数传给另外一个函数
def foo(n):print(n)
def bar(name):print("my name is %s"%name)  #使用了百分号类的字符串拼接
foo(bar('小沈阳'))
#会先传入“小沈阳”执行bar(),并输出,
#再将bar()的返回值,即None传入foo()中,并输出形参

运行结果:
my name is 小沈阳
None

  1. 低级函数封装
num_1 = [1,2,3,4,5]
def map_test(array):ret = []for i in array:  #把列表中的所有元素都乘2ret.append(i*2)return ret  #可以返回一个列表
ret = map_test(num_1)  #执行封装函数
print(ret)

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

  1. 高级封装函数——最接近map()函数的本质
num_1 = [1,2,3,4,5]
def cut_one(x):  #定义一个做减1运算的函数return x-1
def add_one(x):   #定义一个做加1运算的函数return x+1
def map_test(func,array):  #定义一个做全部遍历的函数,并执行相关操作的函数ret=[]for i in array:res=func(i)   #add_oneret.append(res)return ret
print(map_test(add_one,num_1))   #加1
print(map_test(cut_one,num_1))   #减1

运行结果:
[2, 3, 4, 5, 6]
[0, 1, 2, 3, 4]

  1. map()函数+匿名函数——终极用法
    传入一个函数和一个列表到封装函数中,好处是可以根据需求传入各种定义的函数,将列表中所有的元素做处理
#第一个参数是一个函数,第二个参数是一个可迭代对象(可循环的)
num_1 = [1,2,3,4,5]
res = map(lambda x:x+1,num_1)  #每个数都加1
print(list(res))  #打印的时候必须输出列表
msg='yourself'
print(list(map(lambda x:x.upper(),msg)))  #将所有字符都变大写
#map()函数返回的是内存地址,需要list列表化或者tuple元组化才可以打印出对应的值

运行结果:
[2, 3, 4, 5, 6]
[‘Y’, ‘O’, ‘U’, ‘R’, ‘S’, ‘E’, ‘L’, ‘F’]
原来,map()函数是做批量处理用的

三、reduce()函数

  1. 初级reduce()——简单的单函数
num = [1,2,3,4,5,6,100]
def reduce_test(array):res = 0for n in array:  #将num中的元素都累加起来res += nreturn res
print(reduce_test(num))

运行结果:121

  1. 进阶reduce()——函数嵌套
num = [1,2,3,4,5,100]
def reduce_test(func,array,init=None):  #某参数=None则为非必须参数if init == None:res = array.pop(0)#用户没有输入值,则将第一个值赋值给res,并且删除第一个值,实现每乘完一个就取出一个else:res = init  #用户输入了一个值for n in array:  #将num中的元素都累乘起来res = func(res,n)  #传入的两个参数是需要相乘的两个数,每次都传入了func相乘后都更新res的值return res
print(reduce_test(lambda x,y:x*y, num, 2))
#该匿名函数接收两个参数对x,y两个参数做相乘处理

运行结果:
24000

  1. reduce()函数——终极reduce
    注意:该函数使用前需要从functools库中导入。
    即:from functools import reduce
from functools import reduce
num = [1,2,3,4,5,100]
print(reduce(lambda x,y:x*y, num, 2))
#reduce函数必须导入functools模块,且第三个参数是非必须参数,为初始值

运行结果:
24000
很明显,reduce()函数做整合用的。

四、filter()函数

这个函数在我的文章:初学者python笔记(filter()函数完全详解)里已经专门介绍了,这里就不做详细分析,只拿出最后的用法。

people_onepiece=[{'name':'路飞','age':19},  #列表中有5个字典,每个字典都有2个键值对{'name':'娜美','age':20},{'name':'山治','age':22},{'name':'乔巴','age':12},{'name':'乌索普','age':21}]
print(list(filter(lambda n:n['age']<=20,people_onepiece)))
#传入的参数是一个判断年龄的匿名函数,一个列表
#如果年龄小于20岁,则将该字典保留下来

运行结果:
[{‘name’: ‘路飞’, ‘age’: 19}, {‘name’: ‘娜美’, ‘age’: 20}, {‘name’: ‘乔巴’, ‘age’: 12}]
可以看出,filter()函数是做筛选用的

五、三大函数总结

map()函数,filter()函数,reduce()三大批量处理函数总结:
map函数是将一个列表中所有的元素都处理了一遍(最终返回的还是一个完整列表,位置和顺序都不变)

filter函数是将一个列表中所有的元素筛选了一遍,判断每个元素得到的布尔值(最终返回的是被筛选过的元素组成的一个列表)

reduce函数是把一个完整的列表都整合出另一个数据,或累加结果,或累乘结果(最终返回的是一个元素)

map函数 每个元素都会变
filter函数 保留符合条件的元素
reduce函数 整合出新元素

初学者python笔记(map()函数、reduce()函数、filter()函数、匿名函数)相关推荐

  1. Python函数式编程中map()、reduce()和filter()函数的用法

    Python中map().reduce()和filter()三个函数均是应用于序列的内置函数,分别对序列进行遍历.递归计算以及过滤操作.这三个内置函数在实际使用过程中常常和"行内函数&quo ...

  2. Python-map、reduce、filter、sorted函数

    map.reduce.filter.sorted函数 Python内置map.reduce.filter.sorted函数. map函数 map函数接受两个参数,一个是函数,一个是Iterable(迭 ...

  3. python学习-高阶函数(函数传参、返回函数(闭包)、匿名函数lambda)

    文章目录 高阶函数 函数传参 返回函数(闭包) 匿名函数lambda 高阶函数 定义: 至少满足下列一个条件: 接受一个或多个函数作为输入 输出一个函数 python里的高阶函数有 filter.ma ...

  4. Python基础知识——函数的基本使用、函数的参数、名称空间与作用域、函数对象与闭包、 装饰器、迭代器、生成器与yield、函数递归、面向过程与函数式(map、reduce、filter)

    文章目录 1 函数的基本使用 一 引入 二 定义函数 三 调用函数与函数返回值 2 函数的参数 一 形参与实参介绍 二 形参与实参的具体使用 2.1 位置参数 2.2 关键字参数 2.3 默认参数 2 ...

  5. java filter函数的用法_5分钟掌握Python | Map、Reduce和Filter如何运用?

    文末有惊喜哦 天给大家介绍的是Python当中三个非常神奇的方法:map.reduce和filter. 一.Map Map除了地图之外,另一个英文本意是映射.在C++和Java一些语言当中,将map进 ...

  6. Python之高阶函数(abs、map、reduce、filter、lambda匿名函数)

    Python之高阶函数(abs.map.reduce.filter.lambda匿名函数) 什么是内置高阶函数 高阶函数:一个函数可以作为参数传给另外一个函数,或者一个函数的返回值为另外一个函数(若返 ...

  7. Python中lambda详解(包括内置函数map、reduce、filter、sorted、max)

    文章目录 一.lambda是什么? 1.lambda语法 2.语法详解 二.lambda的使用 1.定义 2.调用 3.替换 4.作返回值 三.lambda作参数 1.map函数 2.reduce函数 ...

  8. Python高级函数Counter、defaultdict、map、reduce、filter使用

    在这里为大家介绍一下Python非常实用的Counter.defaultdict.map.reduce.filter的函数使用,提高大家在平时使用Python的效率 计数器函数 Counter 带默认 ...

  9. 初学者python笔记(filter()函数完全详解)

    文章目录 初级版本--普通函数: 改进版本--函数嵌套: 高级版本--匿名函数: 终极版本--filter函数: 在Python中总有些奇奇怪怪的函数,filter就是一个,但是它特别强大和实用,了解 ...

最新文章

  1. php图片转字符程序,PHP文字转图片功能原理与实现方法分析
  2. 医学影像阅读/分析软件FSLeyes安装避坑+核磁共振影像数据处理
  3. 皮一皮:运气差,可能说的就是这个吧...
  4. 【android开发】Android防止内存溢出浅析
  5. php 类调用本身方法,php几个关于类的预定义自动调用方法
  6. char str[] 和 char *str 的区别
  7. 上传jar包到Apache Archiva本地仓库
  8. 无人职守安装的设计与部署
  9. CSS 文本转换 text-transform属性
  10. 计算机组成原理试题 t4,计算机组成原理(四版)本科生试题库整理附答案
  11. linux usermod修改用户所在组方法
  12. Python下使用tarfile模块来实现文件归档压缩与解压
  13. jquery提交表单_jQuery提交表单
  14. spyder配置python_快速了解Python开发环境Spyder
  15. 巴西电商olist store订单数据分析
  16. Python3开启自带http服务
  17. 借势氢能源发展热潮,重塑股份持续加速行业布局
  18. 小米4C官方/第三方ROM下载
  19. 武汉大学计算机学院夏桂松,实验室硕士研究生王碧杉、何敬伟在ECCV上发表事件相机高质量图像重建论文...
  20. 视频教程-Java异常原理剖析-Java

热门文章

  1. xml getelementsbytagname php,用PHP编写和读取XML的几种方式
  2. enlink请输入正确服务器地址,Enlink
  3. mysql快捷键设置_MySQL快捷命令
  4. 服务器系统时间提前八小时,windows服务器时间少八小时
  5. android studio一个页面等待3秒跳转_Flutter 对 iOS、Android(双端开发者)的快速理解(二)
  6. 计算机视觉技术测试物体距离,应用计算机视觉技术检测物体的形变
  7. java的constructor怎么用,Java Constructor getDeclaringClass()用法及代码示例
  8. 创建RMAN CATALOG
  9. python pandas 处理相同标题的csv文件_Python使用pandas处理CSV文件的实例讲解
  10. C#详解值类型和引用类型区别