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. 当url中出现汉字

  2. Cypher基本指令学习1

    1.查询节点 查询所有节点match (n) return n 查询带有标签的节点 match(movie:Flyer) return movie.name 查询关联节点(查询A导演的所有电影) ma ...

  3. Android 网络编程(一)

    概述 一.Android平台网络相关API接口 1.java.net.*(标准Java接口) java.net.*提供与联网有关的类,包括流.数据包套接字(socket).Internet协议.常见H ...

  4. ubuntu下仅仅获取网卡一的ip地址 && shell中字符串拼接

    问题描述: ubuntu下仅仅获取网卡一的ip地址 问题背景: eth0,eth1,eth2……代表网卡一,网卡二,网卡三…… lo代表127.0.0.1,即localhost | 问题描述: 已知字 ...

  5. 压缩感知重构算法之CoSaMP算法python实现

    压缩感知重构算法之OMP算法python实现 压缩感知重构算法之CoSaMP算法python实现 压缩感知重构算法之SP算法python实现 压缩感知重构算法之IHT算法python实现 压缩感知重构 ...

  6. Nginx(http协议代理 搭建虚拟主机 服务的反向代理 在反向代理中配置集群的负载均衡)

    Nginx 简介 Nginx (engine x) 是一个高性能的 HTTP 和反向代理服务.Nginx 是由伊戈尔·赛索耶夫为俄罗斯访问量第二的 Rambler.ru 站点(俄文:Рамблер)开 ...

  7. MVC异常处理

    处理局部异常 控制器: @Controller @RequestMapping("/ex") public class ExceptionController { @Excepti ...

  8. [TimLinux] django 下载功能中文文件名问题

    from django.utils.encoding import escape_uri_pathfrom django.http import HttpResponse def download(r ...

  9. hdu3015,poj1990树状数组

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3015 题意:给定n组数,每组数有值x和值h,求n组数两两的val的总和.将所有x和所有h分别离散化(不 ...

  10. protobuf 语法 与 protocol-buffers 的使用

    前言 protocol-buffers 是 node.js 平台对支持 protobuf 封装的三方模块,下面的例子都通过 protocol-buffers 的使用来说明. 什么是protobuf G ...