python 内置了map()和reduce()函数

1、map()函数

map()函数接收两个参数,一个是函数,一个是可迭代对象Iterable,map将传入的函数依次作用于序列的每一个元素。并把结果作为一个迭代器Iterator返回。

比如,函数f(x) = x2,要把这个函数作用在一个list[1,2,3,4,5,6]上:

>>> def f(x):
... return x*x
...
>>> map(f,[1,2,3,4,5,6])
<map object at 0x00E0BCF0>
>>> m = map(f,[1,2,3,4,5,6])
>>> list(m)
[1, 4, 9, 16, 25, 36]

此例中,map传入的第一个参数是f函数,由于结果m是一个Iterator,可以通过list()函数把整个序列都计算出来并显示一个list。

再比如:把list中所有的数字转化为字符串:

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

2、reduce()函数

reduce()函数内置在模块functools中。reduce也是把一个函数作用在一个序列上,只是这个传入的函数必要要接收2个参数,reduce再把这个传入的函数运算的结果和序列的下一个元素一起传入这个函数中,效果相当于:

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

例子1:对一个list求和:

>>> from functools import reduce
>>> def add(x,y):
... return x+y
...
>>> reduce(add,[1,2,3,4,5,6])
21

例子2:把list[1,2,3,4,5,6]转换成整数123456:

>>> from functools import reduce
>>> def listToInt(x,y):
... return x*10 + y
...
>>> reduce(listToInt,[1,2,3,4,5,6])
123456

例子3:把一个str字符串类型的对象转换成int整数类型的对象:

>>> from functools import reduce
>>> DIGITS={'':0,'':1,'':2,'':3,'':4,'':5,'':6,'':7,'':8,'':9}
>>> def str2int(s):
... def fx(x,y):
... return x*10 +y
... def char2num(s):
... return DIGITS[s]
... return reduce(fx,map(char2num,s))
...
>>> str2int('')
1234567

例子4:利用mao()函数,把用户输入的不规范的英文名字,变为首字母大写,其他的小写。输入['abc','xYz'],输出['Abc','Xyz']:

>>> def normal(n):
... return n[0].upper()+n[1:].lower()
...
>>> l=['abc','xYz']
>>> list(map(normal,l))
['Abc', 'Xyz']

这里没有考虑开端为空字符的情况。

例子5:利用reduce()函数,编写一个函数,将接收到的list各个元素求积:

>>> from functools import reduce
>>> def pro(x,y):
... return x*y
...
>>> reduce(pro,[2,4,6,8])

例子6:使用reduce和map函数,编写一个str2float函数,把字符串‘12.34’转换为浮点型12.34:

>>> from functools import reduce
>>> def str2float(s):
... def pro(x,y):
... return x*10 +y
... def char2num(s):
... return DIG[s]
... DIG = {'': 0, '': 1, '': 2, '': 3, '': 4, '': 5, '': 6, '': 7, '': 8, '': 9}
... num = s.split('.')
... intnum = reduce(pro,map(char2num,num[0]))
... floatnum = reduce(pro,map(char2num,num[1]))/(pow(10,len(num[1])))
... return intnum + floatnum
...
>>> str2float('12.34')
12.34

python高阶函数——map/reduce的更多相关文章

  1. Python高阶函数_map/reduce/filter函数

    本篇将开始介绍python高阶函数map/reduce/filter的用法,更多内容请参考:Python学习指南 map/reduce Python内建了map()和reduce()函数. 如果你读过 ...

  2. python--函数式编程 (高阶函数(map , reduce ,filter,sorted),匿名函数(lambda))

    1.1函数式编程 面向过程编程:我们通过把大段代码拆成函数,通过一层一层的函数,可以把复杂的任务分解成简单的任务,这种一步一步的分解可以称之为面向过程的程序设计.函数就是面向过程的程序设计的基本单元. ...

  3. Python 函数式编程 & Python中的高阶函数map reduce filter 和sorted

    1. 函数式编程 1)概念 函数式编程是一种编程模型,他将计算机运算看做是数学中函数的计算,并且避免了状态以及变量的概念.wiki 我们知道,对象是面向对象的第一型,那么函数式编程也是一样,函数是函数 ...

  4. Python高阶函数map、reduce、filter、sorted的应用

    #-*- coding:utf-8 -*- from selenium import webdriver from selenium.webdriver.support.wait import Web ...

  5. JavaScript高阶函数 map reduce filter sort

    本文是笔者在看廖雪峰老师JavaScript教程时的个人总结 高阶函数            一个函数就接收另一个函数作为参数,这种函数就称之为高阶函数          1.高阶函数之map:   ...

  6. python之高阶函数map/reduce

    L = [] for n in [1, 2, 3, 4, 5, 6, 7, 8, 9]: L.append(f(n)) print(L) Python内建了map()和reduce()函数. 我们先看 ...

  7. Python学习 Day 5 高阶函数 map/reduce filter sorter 返回函数 匿名函数 装饰器 偏函数

    高阶函数Higher-orderfunction 变量可以指向函数 >>> abs #abs(-10)是函数调用,而abs是函数本身 <built-in function ab ...

  8. Python高阶函数--map

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

  9. JavaScript高阶函数map/reduce、filter和sort

    map() 举例说明,比如我们有一个函数f(x)=x²,要把这个函数作用在一个数组[1,2,3,4,5,6,7,8,9]上. 由于map()方法定义在JavaScript的Array中,我们调用Arr ...

随机推荐

  1. 腾讯视频缓存 tdl 转 mp4

    找到腾讯视频->设置,看下缓存文件的目录地址,然后cmd,通过命令进行转化.  copy/b *.tdl 1.mp4

  2. ASP.NET Core3.X 终端中间件转换为端点路由运行

    引言 前几天.NET Core3.1发布,于是我把公司一个基础通用系统升级了,同时删除了几个基础模块当然这几个基础模块与.NET Core3.1无关,其中包括了支付模块,升级完后静文(同事)问我你把支 ...

  3. 输入URL按下enter键后发生的事

    输入URL按下enter键后浏览器和服务器各自发生的事. 浏览器 1.用户在浏览器中输入URL地址 2.浏览器解析用户输入的URL地址=>域名+端口 3.浏览器检查本地缓存中是否存在这个域名=& ...

  4. redis数据类型--hash

    /** Redis应用之Hash数据类型* 问题1:操作命令* 问题2:存储实现原理和数据结构* 问题3:应用场景* */ 先了解下什么是hash,什么是hash碰撞:hash:是包含键值对的kv的数 ...

  5. Golang中的布隆过滤器

    目录 1. 布隆过滤器的概念 2. 布隆过滤器应用场景 3. 布隆过滤器工作原理 4. 布隆过滤器的优缺点 5. 布隆过滤器注意事项 6. Go实现布隆过滤器 1. 布隆过滤器的概念 布隆过滤器(Bl ...

  6. Kubernetes v1.17 版本解读 | 云原生生态周报 Vol. 31

    作者 | 徐迪.李传云.黄珂.汪萌海.张晓宇.何淋波 .陈有坤.李鹏审核 | 陈俊 上游重要进展 1. Kubernetes v1.17 版本发布 功能稳定性是第一要务.v1.17 包含 22 个增强 ...

  7. 使用dva改造旧项目的数据流方案

     前言 最近在给自己的脚手架项目转到TypeScript时,遇到了一些麻烦. 项目之前采用的是react + react-redux + redux-thunk + redux-actions +re ...

  8. 【转载】Dockerfile文件详解

    什么是dockerfile? Dockerfile是一个包含用于组合映像的命令的文本文档.可以使用在命令行中调用任何命令. Docker通过读取Dockerfile中的指令自动生成映像. docker ...

  9. 2019CCPC秦皇岛 F Forest Program

    队友过的:https://blog.csdn.net/liufengwei1/article/details/101632506 Forest Program Time Limit: 2000/100 ...

  10. require.context批量引入文件

    require.context 是什么 require.context 是由webpack内部实现,require.context在构建时,webpack 在代码中进行解析. 当需要引入文件夹内多个文 ...