Python基础知识(十):高阶函数【map()、reduce()、filter()、lambda、sorted】【高阶函数:可接收其他函数作为参数的函数】

本文主要是介绍Python基础知识(十):高阶函数【map()、reduce()、filter()、lambda、sorted】【高阶函数:可接收其他函数作为参数的函数】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

高阶函数:一个函数可以作为参数传给另外一个函数,或者一个函数的返回值为另外一个函数(若返回值为该函数本身,则为递归),满足其一则为高阶函数。

一、map函数

map函数接收的是两个参数,一个函数,一个序列,其功能是将序列中的值处理再依次返回至列表内。其返回值为一个迭代器对象–》例如:<map object at 0x00000214EEF40BA8>。其用法如图:
在这里插入图片描述
接下来我们看一下map函数的机制是怎么样的:

num=[1,2,3,4,5]
def square(x):return x**2
#map函数模拟
def map_test(func,iter):num_1=[]for i in iter:ret=func(i)# print(ret)num_1.append(ret)return num_1.__iter__() #将列表转为迭代器对象#map_test函数
print(list(map_test(square,num)))
#map函数
print(list(map(square,num)))#当然map函数的参数1也可以是匿名函数、参数2也可以是字符串
print(list(map_test(lambda x:x.upper(),"amanda")))
print(list(map(lambda x:x.upper(),"amanda")))

二、filter函数

filter函数也是接收一个函数和一个序列的高阶函数,其主要功能是过滤。其返回值也是迭代器对象,例如:<filter object at 0x000002042D25EA90>,其图示如下:
在这里插入图片描述
接下来我们看一下filter函数的用法以及其机制是怎么样的:

names=["Alex","amanda","xiaowu"]
#filter函数机制
def filter_test(func,iter):names_1=[]for i in iter:if func(i): #传入的func函数其结果必须为bool值,才有意义names_1.append(i)return names_1
#filter_test函数
print(filter_test(lambda x:x.islower(),names))
#filter函数
print(list(filter(lambda x:x.islower(),names)))

三、reduce函数

reduce函数也是一个参数为函数,一个为可迭代对象的高阶函数,其返回值为一个值而不是迭代器对象,故其常用与叠加、叠乘等,图示例如下:
在这里插入图片描述
实例如下:

#reduce函数不是内置函数,而是在模块functools中的函数,故需要导入
from functools import reducenums=[1,2,3,4,5,6]
#reduce函数的机制
def reduce_test(func,array,ini=None): #ini作为基数if ini == None:ret =array.pop(0)else:ret=inifor i in array:ret=func(ret,i)return ret
#reduce_test函数,叠乘
print(reduce_test(lambda x,y:x*y,nums,100))
#reduce函数,叠乘
print(reduce(lambda x,y:x*y,nums,100))

四、filter、map区别

batch = [None, 2, 3]
print("batch = ", batch)a = list(filter(lambda x: x is not None, batch))
b = list(filter(lambda x: x, batch))
c = lambda x: x, batchprint("\na = ", a)
print("b = ", b)
print("c = ", c)demo1 = [1, 2, 3, 4, 5, 6, 7]
demo1_filter = filter(lambda x: x > 2, demo1)
demo1_filter_list = list(demo1_filter)print("\ntype(demo_filter) = {0}; demo_filter = {1}".format(type(demo1_filter), demo1_filter))
print("type(demo1_filter_list) = {0}; demo1_filter_list = {1}".format(type(demo1_filter_list), demo1_filter_list))demo2 = [1, 2, 3, 4, 5, 6, 7]
demo2_map = map(lambda x: x > 2, demo2)
demo2_map_list = list(demo2_map)print("\ntype(demo2_map) = {0}; demo2_map = {1}".format(type(demo2_map), demo2_map))
print("type(demo2_map_list) = {0}; demo2_map_list = {1}".format(type(demo2_map_list), demo2_map_list))

打印结果:

batch =  [None, 2, 3]a =  [2, 3]
b =  [2, 3]
c =  (<function <lambda> at 0x7f1da46f9280>, [None, 2, 3])type(demo_filter) = <class 'filter'>; demo_filter = <filter object at 0x7f1da4519fa0>
type(demo1_filter_list) = <class 'list'>; demo1_filter_list = [3, 4, 5, 6, 7]type(demo2_map) = <class 'map'>; demo2_map = <map object at 0x7f1da4519e20>
type(demo2_map_list) = <class 'list'>; demo2_map_list = [False, False, True, True, True, True, True]



参考资料:
Python高阶函数
python-内置常用高阶函数
python中5个常用的内置高阶函数

这篇关于Python基础知识(十):高阶函数【map()、reduce()、filter()、lambda、sorted】【高阶函数:可接收其他函数作为参数的函数】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1128824

相关文章

Python版本信息获取方法详解与实战

《Python版本信息获取方法详解与实战》在Python开发中,获取Python版本号是调试、兼容性检查和版本控制的重要基础操作,本文详细介绍了如何使用sys和platform模块获取Python的主... 目录1. python版本号获取基础2. 使用sys模块获取版本信息2.1 sys模块概述2.1.1

一文详解Python如何开发游戏

《一文详解Python如何开发游戏》Python是一种非常流行的编程语言,也可以用来开发游戏模组,:本文主要介绍Python如何开发游戏的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录一、python简介二、Python 开发 2D 游戏的优劣势优势缺点三、Python 开发 3D

Python函数作用域与闭包举例深度解析

《Python函数作用域与闭包举例深度解析》Python函数的作用域规则和闭包是编程中的关键概念,它们决定了变量的访问和生命周期,:本文主要介绍Python函数作用域与闭包的相关资料,文中通过代码... 目录1. 基础作用域访问示例1:访问全局变量示例2:访问外层函数变量2. 闭包基础示例3:简单闭包示例4

Python实现字典转字符串的五种方法

《Python实现字典转字符串的五种方法》本文介绍了在Python中如何将字典数据结构转换为字符串格式的多种方法,首先可以通过内置的str()函数进行简单转换;其次利用ison.dumps()函数能够... 目录1、使用json模块的dumps方法:2、使用str方法:3、使用循环和字符串拼接:4、使用字符

Python版本与package版本兼容性检查方法总结

《Python版本与package版本兼容性检查方法总结》:本文主要介绍Python版本与package版本兼容性检查方法的相关资料,文中提供四种检查方法,分别是pip查询、conda管理、PyP... 目录引言为什么会出现兼容性问题方法一:用 pip 官方命令查询可用版本方法二:conda 管理包环境方法

基于Python开发Windows自动更新控制工具

《基于Python开发Windows自动更新控制工具》在当今数字化时代,操作系统更新已成为计算机维护的重要组成部分,本文介绍一款基于Python和PyQt5的Windows自动更新控制工具,有需要的可... 目录设计原理与技术实现系统架构概述数学建模工具界面完整代码实现技术深度分析多层级控制理论服务层控制注

pycharm跑python项目易出错的问题总结

《pycharm跑python项目易出错的问题总结》:本文主要介绍pycharm跑python项目易出错问题的相关资料,当你在PyCharm中运行Python程序时遇到报错,可以按照以下步骤进行排... 1. 一定不要在pycharm终端里面创建环境安装别人的项目子模块等,有可能出现的问题就是你不报错都安装

Python打包成exe常用的四种方法小结

《Python打包成exe常用的四种方法小结》本文主要介绍了Python打包成exe常用的四种方法,包括PyInstaller、cx_Freeze、Py2exe、Nuitka,文中通过示例代码介绍的非... 目录一.PyInstaller11.安装:2. PyInstaller常用参数下面是pyinstal

Python爬虫HTTPS使用requests,httpx,aiohttp实战中的证书异步等问题

《Python爬虫HTTPS使用requests,httpx,aiohttp实战中的证书异步等问题》在爬虫工程里,“HTTPS”是绕不开的话题,HTTPS为传输加密提供保护,同时也给爬虫带来证书校验、... 目录一、核心问题与优先级检查(先问三件事)二、基础示例:requests 与证书处理三、高并发选型:

Python中isinstance()函数原理解释及详细用法示例

《Python中isinstance()函数原理解释及详细用法示例》isinstance()是Python内置的一个非常有用的函数,用于检查一个对象是否属于指定的类型或类型元组中的某一个类型,它是Py... 目录python中isinstance()函数原理解释及详细用法指南一、isinstance()函数