python高阶函数map reduce filter sorted_【Python入门】7.高阶函数之 map( )、reduce( )、filter( )、sorted( )的用法...
目录
高阶函数
map( )函数
reduce( )函数
•【练习】字符串转为整数的函数实现
filter( )函数
•【应用】产生素数的函数实现
sorted( )函数
补充笔记
高阶函数
Higher-order function,即高阶函数。
事实上,变量是可以指向函数的。>>>abs(-2)2>>>f = abs #f变量指向函数abs()>>>f(-2)2
而函数名也是变量。>>>abs = 1>>>abs(-1) #TypeError: 'int' object is not callable,此时abs不再是函数,而是整数1注:由于abs函数实际上是定义在import builtins模块中的,所以要让修改abs变量的指向在其它模块也生效,要用import builtins; builtins.abs = 10。
既然变量可以指向函数,那么函数也可以传入函数和返回函数,这种函数就叫高阶函数。
map( )函数
map( )是一种高阶函数,它接收两个参数,第一个是函数,第二个是Iterable,即可迭代对象。map( )将函数依次作用于Iterable的每个元素,并将结果以Iterator,迭代器的形式返回。这种方式类似构造出了数学中的映射过程。由于Iterator是惰性序列,可以用list( ) 将其转化为list输出。>>>list(map(str,[1,2,3,4,5,6])) #str()可以将整数转化为字符串['1', '2', '3', '4', '5', '6']
我们还能用列表生成器得到同样的结果,但要用到for语句:>>>b = [str(x) for x in [1,2,3,4,5,6]]
['1', '2', '3', '4', '5', '6']
reduce( )函数
reduce( )函数同样接收一个函数和一个Iterable两个参数,不同的是所传入的函数必须要接收两个参数,而reduce是把函数作用的结果继续与序列中下一个元素做累计计算。reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4)
这个有什么用呢,举个简单的例子,可以把序列转化为相应的整数显示。>>>from functools import reduce #加入内置函数reduce>>>def fn(x, y):
... return(x * 10 + y)
...>>>reduce(fn, [1, 2, 3, 4, 5])12345
【练习】字符串转为整数的函数实现from functools import reduce
d={'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9}def str2int(s):
def char2num(s): #将字符串的每个字符转化为对应的整数,并组成序列
return d[s] def fn(x, y): #将一个序列转化为对应的整数
return x * 10 + y
return reduce(fn,map(char2num,s))
输出结果如下>>>str2int('0110234')110234
filter( )函数
filter,即过滤的意思,filter( )函数的作用是过滤序列。与上面两个函数一样,接收一个函数与一个序列,而在函数作用于序列的元素之后,根据返回值True或False来保留或移除该元素。如写一个保留奇数的函数:>>>def odd(n):
... return n % 2 == 1...>>>list(filter(odd,[1, 2, 3, 4, 5, 6, 7, 8]))
[1, 3, 5, 7]
需要注意的是,filter( )函数返回的也是Iterator,惰性序列,需要用list( )来转化才能直接显示计算结果。
【应用】产生素数的函数实现
(以下代码转自廖雪芳的官方网站)def _odd_iter(): #定义一个初始值为3,且不存在偶数的初始序列生成器
n = 1
while True:
n = n + 2
yield ndef _not_divesible(n): #定义筛选函数,不是n的倍数则返回True
return lambda x : x % n > 0def primes(): #定义一个初始值为2,
yield 2
it = _odd_iter() #it为序列n的生成器,初始序列
while True:
n = next(it) #返回序列n的第一个值
yield n
it = filter(_not_divesible(n), it) #过滤序列中为n的倍数的值for n in primes(): #for循环取值
if n < 100: #打印100以为的素数
print(n) else: break
sorted( )函数
sort,分类、排序的意思。在Python总sorted( )函数可以将list排序。>>>sorted([5, 9, -55, 90, 1])
[-55, 1, 5, 9, 90]
sort( )函数还能接收一个key函数来自定义排序,也就是先把传入的函数作用于list,根据结果进行排序,把传入的初始序列按照结果的顺序进行排序。如接收一个abs( )函数>>>sorted([5, 9, -55, 90, 1], key = abs)
[1, 5, 9, -55, 90]
还能加入第三个参数reverse=True,进行反向排序>>>sorted([5, 9, -55, 90, 1], key = abs, reverse = True)
[90, -55, 9, 5, 1]
补充笔记
补充几个函数的用法,s.index('x')返回字符串中字符'x'的索引值;s.strip( )函数去除字符串首尾的空格或其他指定字符;s[::-1]把字符串s从尾到头顺序重新排列。
作者:三贝_
链接:https://www.jianshu.com/p/09d4284f33e1
python高阶函数map reduce filter sorted_【Python入门】7.高阶函数之 map( )、reduce( )、filter( )、sorted( )的用法...相关推荐
- python编程学习笔记列表_python编程:从入门到实践学习笔记-函数
Python学习资料或者需要代码.视频加Python学习群:516107834 定义函数 举个简单的例子 由上所示,关键字def定义一个函数,后面跟着函数名以及用来输入参数的括号,定义以冒号结束,而p ...
- matlab 绘制符号函数,DAY8 MATLAB学习笔记—simulink入门、MATLAB符号函数的图形绘制...
如何打开simulink: 启动simulink: 先打开MATLAB软件界面 第一步打开simulink 第二步在command windows输入 simulink然后enter,等待 有很多模块 ...
- apollo自动驾驶入门课-高精地图
apollo自动驾驶入门课-高精地图 文章目录 apollo自动驾驶入门课-高精地图 前言 一.高精地图与传统地图的区别 二.高精度地图与感知.定位.规划的关系 2.1 高精地图与感知 2.2 高精地 ...
- python中高阶函数map怎么用_python六十课——高阶函数之map
1.高阶函数: 特点:函数的形参位置必须接受一个函数对象 分类学习: 1).map(fn,lsd1,[lsd2...]): 参数一:fn --> 函数对象 参数二:lsd1 --> 序列对 ...
- 笔记十八:python的内置函数有哪些尼?都怎么是使用尼?(map()、reduce()、filter()、lambda()……)
python的内置函数有很多,你如果和我一样是个初学者,那么学会看这个函数怎么用,需不需要传入参数等问题非常必要,首先尼函数名先打出来,然后按着ctrl键再把鼠标移到函数名位置,发现函数名会变颜色(一 ...
- python匿名函数调用_python3笔记十六:python匿名函数和高阶函数
一:学习内容 lambda函数 map函数与reduce函数 filter函数 sorted函数 二:匿名函数-lambda 1.概念:不使用def这样的语句去定义函数,使用lambda来创建匿名函数 ...
- python四大高阶函数求导_4个python常用高阶函数的使用方法
1.map Python内建了map()函数,map()函数接受两个参数,一个是函数,一个是Iterable,map将传入的函数依次作用到序列的每一个元素上,并把结果作为新的Iterator返回. 举 ...
- python 惰性序列_菜鸟学飞自学Python(五)高阶函数
(仅个人学习摘抄) 函数式编程 函数式编程就是一种抽象程度很高的编程范式,特点是允许把函数本身作为参数传入到另一个函数,还允许返回一个函数. 高阶函数 高阶函数--Higher-order funct ...
- python lambda map reduce_简单了解python filter、map、reduce的区别
这篇文章主要介绍了简单了解python filter.map.reduce的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 python中有一些 ...
- python高阶函数 动态_Python进阶内容(一)--- 高阶函数 High order function
0. 问题 #本文将围绕这段代码进行Python中高阶函数相关内容的讲解#文中所有代码的兼容性要求为:Python 3.6,IPython 6.1.0 defaddspam(fn):def new(* ...
最新文章
- Linux服务器-使用mysql
- LACP链路聚合-基础篇
- typora将html转为格式,Typora 修改配置文件实现自定义标签样式(常用)
- C语言的特点是什么?
- Dart基础学习02--变量及内置类型
- 一个神奇的数字货币,终结了南非小哥每天步行20公里的烦恼
- Qt信号与槽传递QList动态数组
- 架构实战篇(三)-Spring Boot架构搭建RESTful API案例
- 思科刀片服务器系统,思科 UCS B 系列刀片服务器
- c语言车辆管理程序,用c语言编的车辆管理
- cmd查看自己的CPU参数
- camera基础概念之等效焦距 视场角的计算
- 点击 进入 QQ临时会话 界面
- 劳动者可以拒绝加班吗
- 约瑟夫环 有15个人围成一圈,按顺序淘汰
- Oracle GoldenGate 文章集合
- jmeter简单的接口请求
- 解决VC6.0出现的Error spawning cl.exe错误
- Python 之网络编程之socket(3)hashlib模块
- 《Spring Boot+Vue全栈开发实战》读书笔记