目录

高阶函数

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( )的用法...相关推荐

  1. python编程学习笔记列表_python编程:从入门到实践学习笔记-函数

    Python学习资料或者需要代码.视频加Python学习群:516107834 定义函数 举个简单的例子 由上所示,关键字def定义一个函数,后面跟着函数名以及用来输入参数的括号,定义以冒号结束,而p ...

  2. matlab 绘制符号函数,DAY8 MATLAB学习笔记—simulink入门、MATLAB符号函数的图形绘制...

    如何打开simulink: 启动simulink: 先打开MATLAB软件界面 第一步打开simulink 第二步在command windows输入 simulink然后enter,等待 有很多模块 ...

  3. apollo自动驾驶入门课-高精地图

    apollo自动驾驶入门课-高精地图 文章目录 apollo自动驾驶入门课-高精地图 前言 一.高精地图与传统地图的区别 二.高精度地图与感知.定位.规划的关系 2.1 高精地图与感知 2.2 高精地 ...

  4. python中高阶函数map怎么用_python六十课——高阶函数之map

    1.高阶函数: 特点:函数的形参位置必须接受一个函数对象 分类学习: 1).map(fn,lsd1,[lsd2...]): 参数一:fn --> 函数对象 参数二:lsd1 --> 序列对 ...

  5. 笔记十八:python的内置函数有哪些尼?都怎么是使用尼?(map()、reduce()、filter()、lambda()……)

    python的内置函数有很多,你如果和我一样是个初学者,那么学会看这个函数怎么用,需不需要传入参数等问题非常必要,首先尼函数名先打出来,然后按着ctrl键再把鼠标移到函数名位置,发现函数名会变颜色(一 ...

  6. python匿名函数调用_python3笔记十六:python匿名函数和高阶函数

    一:学习内容 lambda函数 map函数与reduce函数 filter函数 sorted函数 二:匿名函数-lambda 1.概念:不使用def这样的语句去定义函数,使用lambda来创建匿名函数 ...

  7. python四大高阶函数求导_4个python常用高阶函数的使用方法

    1.map Python内建了map()函数,map()函数接受两个参数,一个是函数,一个是Iterable,map将传入的函数依次作用到序列的每一个元素上,并把结果作为新的Iterator返回. 举 ...

  8. python 惰性序列_菜鸟学飞自学Python(五)高阶函数

    (仅个人学习摘抄) 函数式编程 函数式编程就是一种抽象程度很高的编程范式,特点是允许把函数本身作为参数传入到另一个函数,还允许返回一个函数. 高阶函数 高阶函数--Higher-order funct ...

  9. python lambda map reduce_简单了解python filter、map、reduce的区别

    这篇文章主要介绍了简单了解python filter.map.reduce的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 python中有一些 ...

  10. python高阶函数 动态_Python进阶内容(一)--- 高阶函数 High order function

    0. 问题 #本文将围绕这段代码进行Python中高阶函数相关内容的讲解#文中所有代码的兼容性要求为:Python 3.6,IPython 6.1.0 defaddspam(fn):def new(* ...

最新文章

  1. Linux服务器-使用mysql
  2. LACP链路聚合-基础篇
  3. typora将html转为格式,Typora 修改配置文件实现自定义标签样式(常用)
  4. C语言的特点是什么?
  5. Dart基础学习02--变量及内置类型
  6. 一个神奇的数字货币,终结了南非小哥每天步行20公里的烦恼
  7. Qt信号与槽传递QList动态数组
  8. 架构实战篇(三)-Spring Boot架构搭建RESTful API案例
  9. 思科刀片服务器系统,思科 UCS B 系列刀片服务器
  10. c语言车辆管理程序,用c语言编的车辆管理
  11. cmd查看自己的CPU参数
  12. camera基础概念之等效焦距 视场角的计算
  13. 点击 进入 QQ临时会话 界面
  14. 劳动者可以拒绝加班吗
  15. 约瑟夫环 有15个人围成一圈,按顺序淘汰
  16. Oracle GoldenGate 文章集合
  17. jmeter简单的接口请求
  18. 解决VC6.0出现的Error spawning cl.exe错误
  19. Python 之网络编程之socket(3)hashlib模块
  20. 《Spring Boot+Vue全栈开发实战》读书笔记

热门文章

  1. Vert.x Web
  2. 学习——AQS工作原理分析
  3. Java之数据库基础理论
  4. 使用Expression实现数据的任意字段过滤(1)
  5. iOS之正则表达式的使用
  6. 跟我学android-Notification
  7. POJ 1026 Cipher
  8. STM32F103ZET6利用DAC产生噪声
  9. 基于编辑方法的文本生成(上)
  10. 综述 | 跨语言自然语言处理论文汇总