Python内置了四个强大的函数,如标题所示,下面来记录说明下:

map

看见此 map 需要注意,python中的 map 和 java 中的 map,是不同的,java中的 map 与 python中的字典列表相近。

map是一个十分便利的函数,它可以将list中的每个值执行相同的函数方法,并返回一个新的迭代器对象Iterator,示例如下:

>>> l = [1,2,3,4,5]
>>> def pf(num):
...     return num * num
...
>>> map(pf,l)
<map object at 0x0000000001E5F160>
>>> #为了方便看结果,用list()把Iterator对象转换成list
>>> list(map(pf,l))
[1, 4, 9, 16, 25]

上述示例中,是将一个包含若干整数的 list 执行 pf 方法,使其得到一个Iterator,并将其转化为list。

map作为高阶函数,可以执行更多复杂的操作,比如,将整型list转为字符型list,示例如下:

>>> l2 = [1,2,3,4,5]
>>> list(map(str,l2))
['1', '2', '3', '4', '5']

总结下:使用map函数,需要向其传入两个参数,第一个为 可迭代对象Iterable 中元素待执行的方法(简称函数),第二个为需要执行可迭代对象 Iterator ,如下所示:

map(函数,可迭代对象)

使用它方便,简单又快捷。

reduce

reduce的使用方法和map类似,它是把函数作用在一个序列上,需要的可迭代对象至少需要两个元素,示例如下:

reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4)

使用reduce前,需要导入函数,具体写法如下:

from functools import reduce

它可实现整数字符串 list 转为一个整数,示例如下:

>>> l3 = [1,2,3,4,5]
>>> def list2num(x,y):
...     return x * 10 + y
...
>>> from functools import reduce
>>> reduce(list2num,l3)
12345

借此,我们可以实现很多事情,下面以浮点字符串,转浮点型为例,结合 map 和 reduce 写个例子:

>>> import test
>>> test.str2float('123.456')
123.456

上述代码调用了这个函数的方法:

from functools import reduce
DIGITS = {'0':0,'1':1,'2':2,'3':3,'4':4,'5':5,'6':6,'7':7,'8':8,'9':9}
def str2float(num):znum = num[:num.index('.')]xnum = num[num.index('.')+1:]xn = len(xnum)def getnum(num):return DIGITS[num]z = list(map(getnum,znum))x = list(map(getnum,xnum))   def list2num(x,y):return x*10 + y  nznum = reduce(list2num,z)nxnum = reduce(list2num,x)return nznum+ nxnum*pow(0.1,xn)

filter

filter是一个列表过滤器,它可以根据条件过滤出列表中你想要的元素,使用起来也很简单,示例如下:

def t_test1(n):return n % 2 == 1
list(filter(t_test1,[1,2,3,4,5,6,7]))
[1,3,5,7]

它的使用方法也很简单,需要传两个参数,一个是根据函数内置条件返回 True 或 False的函数;另一个是可迭代对象Iterator。

filter()把传入的函数依次作用与每个元素,然后根据返回值是 True 或 False 决定是保留还是丢弃该元素。

把一个序列的中的空字符删除,写法如下:

def t_t1(n):return n and n.strip()
L4 = ['123','a','','  ',None]
list(filter(t_t1,L4))
['123','a']

sorted

sorted是Python内置的一个排序函数,它可以快速便捷的将列表中的元素排序,示例如下:

>>> L = [1,20,-19,25,30,-2]
>>> sorted(L)
[-19, -2, 1, 20, 25, 30]
>>> L2 = ['abc','good','Cat','DOG','CAKE']
>>> sorted(L2)
['CAKE', 'Cat', 'DOG', 'abc', 'good']

如上述示例所示,sorted函数自动将列表中的元素按照大小进行排序,其中,字符传是根据ASCII码自字符串首位开始比较的。

使用它时,还可以给排序加入条件,比如,数字按绝对值大小排序,字符串按全小写来排序,示例如下:

>>> L = [1,20,-19,25,30,-2]
>>> sorted(L,key=abs)
[1, -2, -19, 20, 25, 30]
>>> L2 = ['abc','good','Cat','DOG','CAKE']
>>> sorted(L2,key=str.lower)
['abc', 'CAKE', 'Cat', 'DOG', 'good']

如果想得到反向排列的列表,添加一个参数即可,示例如下:

>>> L = [1,20,-19,25,30,-2]
>>> sorted(L,key=abs,reverse=True)
[30, 25, 20, -19, -2, 1]
>>> L2 = ['abc','good','Cat','DOG','CAKE']
>>> sorted(L2,key=str.lower,reverse=True)
['good', 'DOG', 'Cat', 'CAKE', 'abc']

sorted可以使代码更简洁,它很强大。

本篇就到这里,教材网址:https://www.liaoxuefeng.com, 继续学习~~

Python自学记录——高阶函数map/reduce、filter、sorted相关推荐

  1. py函数式编程(高阶函数map/reduce/filter/sorted、闭包函数/返回函数、匿名函数lamber、@装饰器decorator、偏函数functool.partial())

    #py函数式编程.py #高阶函数map/reduce/filter/sorted.闭包函数/返回函数.匿名函数lamber.@装饰器decorator.偏函数functool.partial()# ...

  2. Python高阶函数(map,reduce,filter)

    python内置常用高阶函数:. 称为 函数式编程,常常有一下特点 函数本身可以赋值给变量,赋值后变量为函数: 允许将函数本身作为参数传入另一个函数: 允许返回一个函数. 按常用排序 map() 函数 ...

  3. python高阶函数map_简单了解python高阶函数map/reduce

    高阶函数map/reduce Python内建了map()和reduce()函数. 我们先看map.map()函数接收两个参数,一个是函数,一个是Iterable,map将传入的函数依次作用到序列的每 ...

  4. map 长度_Python实用教程系列——高阶函数Map、Filter、Reduce

    点击上方蓝色文字关注我们吧 有你想要的精彩 作者 | 那个百分十先生出品 | Python知识学堂 上次推文我们介绍了python中的<Logging日志模块>的相关知识,这次推文我们将学 ...

  5. Python中的高阶函数map

    map[映射] 1.map(fn,iter)            fn:  函数             iter :  序列[可迭代对象] 2.功能: 会将iter中的每个元素用作于fn的运算中, ...

  6. Python函数详解:函数定义、调用,lambda函数,高阶函数map,filter,reduce,函数式编程,模块化设计、代码复用、函数递归、enumerate()

    一.函数 函数是一段具有特定功能的.可重用的语句组,通过函数名来表示和调用. 函数是一段代码的抽象和封装 函数是一段具有特定功能的.可重用的语句组 函数是一种功能的抽象,表达特定功能 两个作用:降低编 ...

  7. python中的高阶函数

    python中的高阶函数 文章目录: 1 什么是高阶函数? 1.1 高阶函数:一个函数的`函数名`作为参数传给另外一个函数 1.2 高阶函数:一个函数返回值(return)为另外一个`函数` 2 py ...

  8. python核心,内建函数,高阶函数

    晨测 global和nonlocal区别 写一个递归的阶乘 回顾 1.global和nonlocal 关键字 2.函数的递归 1.查找规律 2.设置退出条件 3.性能 3.闭包 外函数中定义一个内函数 ...

  9. Python高阶函数--map、lambda、reduce、filter、zip

    一.map()函数 map()是 Python 内置的高阶函数,它接收一个函数 f 和一个 list,并通过把list 的每个元素依次作用在函数 f 上,得到一个新的 list 并返回. 例如,对于l ...

最新文章

  1. 21、C#里面类的创建和使用
  2. python调用shell命令-Python怎么运行shell脚本
  3. PAT-乙级-1020. 月饼 (25)
  4. 是的,我打败了一个奥特曼。
  5. 文件2. 文件重命名
  6. 这位 GitHub 冠军项目背后的“老男人”,堪称 10 倍程序员本尊!
  7. @程序员,不会 Debug 还做什么开发?
  8. uniapp:微信小程序地图功能
  9. 151308-48-4,Cyclo(-Gly-Asn-Trp-His-Gly-Thr-Ala-Pro-Asp)-Trp-Val-Tyr-Phe-Ala-His-Leu-Asp-Ile-Ile-Trp
  10. Cent OS网络基本配置——修改配置文件
  11. 杰理之79NRTC 时间【篇】
  12. while 循环进入死循环?
  13. GitHub上传教程,图文并茂
  14. 全量表/增量表/快照表
  15. Java函数的基本知识
  16. 电除尘器 matlab,电除尘用高频高压直流叠加高压脉冲电源的制作方法
  17. php7安装详解(windows环境)
  18. cakephp index.php,CakePHP开发常用技巧详解
  19. 什么是BBR加速,Centos7如何开启BBR加速,优化服务器的传输速度,避免堵塞
  20. 2021-01-12 图像的大小计算 位深和色深

热门文章

  1. RK3399平台开发系列讲解(SPI子系统)4.16、SPI子系统之spidev驱动分析
  2. java ipv6校验_IPv6验证
  3. NPS反向代理流量分析
  4. 怎么正确使用 NPS ?用对了才事半功倍
  5. android 读取各分区大小,Android查看各分区空间大小命令及相关操作
  6. 计算机学科基础综合【目录】
  7. 中兴zxr10路由器重启命令_中兴ZXR10配置说明.doc
  8. 修改联通服务器密码怎么修改,联通宽带修改wifi密码怎么改?
  9. Java资源大全中文版(转)
  10. SpringCloud学习总结