python--map()、reduce()

map()和reduce()是一种在处理大数据时的重要思想,在平时也可以利用。在python中内置了这两个方法,map取映射的意思,reduce取归纳的意思。
一、map()
- map(func, lsd)
参数1是函数
参数2是序列
- 功能:将传入的函数依次作用在序列中的每一个元素,并把结果作为一个新的Iterator返回。
注:可迭代对象是个惰性的列表,直接输出为一个地址,要想输出里面内容要显示的写出来,eg:print(list(res))
# 下面实例的目标是将列表中的字符转换为整形 def char2int(chr):
return {'':0, '':1, '':2, '':3}[chr] # 通过字典来返回转换后的结果 lis = ['','','','']
res = map(char2int, lis) # 用自己写的函数映射到每个元素上
res2 = map(int, lis) # 通过内置函数来实现
print(res) # 惰性列表,返回一个内存地址
print(list(res)) # 强制转换成列表
print(list(res2))
二、ruduce()
- reduce(func, lsd)
参数1是函数
参数2是序列
注:reduce需要引入:from functools import reduce
- 功能:一个函数作用在序列上,这个函数必须接受两个参数,reduce把结果继续和序列的下一个元素累积运算。
- eg: reduce(f, [a,b,c,d]) 等价于f(f(f(a,b),c),d) ----f是一个接受两个参数的函数。
# 实现一个累加 from functools import reduce
# 自定义的两输入加法
def Sum(a,b):
return a + b
lis = [1,2,3,4,5] res = reduce(Sum, lis) # 对序列中的元素类似递归的加进去
print(res) # 由于reduce返回的只是一个结果,不必考虑map中提到的问题
三、综合
map、reduce经常是配合起来使用的,下面有一个简单的例子,例子旨在介绍如何使用,无需关心是否实用。
# 这段代码是想要将一段数字的字符串转换为整型 from functools import reduce # 引入reduce方法 def str2int(str):
# reduce中使用的函数,将map转换后的列表中元素,生成按顺序排列的整型数字
def fc(x,y):
return x * 10 + y
# 把字符串中每个元素转换成对应的整型数字,返回一个整型的列表
def fs(chr):
return {'':0, '':1, '':2, '':3,'':4, '':5, '':6, '':7, '':8, '':9}[chr]
return reduce(fc, map(fs,list(str))) # 先使用map函数把每个元素转成数字,然后用reduce函数把数字拼接起来
res = str2int('')
print(res)
python--map()、reduce()的更多相关文章
- Python特殊语法:filter、map、reduce、lambda [转]
Python特殊语法:filter.map.reduce.lambda [转] python内置了一些非常有趣但非常有用的函数,充分体现了Python的语言魅力! filter(function, s ...
- 转:Python一些特殊用法(map、reduce、filter、lambda、列表推导式等)
Map函数: 原型:map(function, sequence),作用是将一个列表映射到另一个列表, 使用方法: def f(x): return x**2 l = range(1,10) map( ...
- Python里的map、reduce、filter、lambda、列表推导式
Map函数: 原型:map(function, sequence),作用是将一个列表映射到另一个列表, 使用方法: def f(x): return x**2 l = range(1,10) map( ...
- python之lambda、filter、map、reduce的用法说明
python中有一些非常有趣的函数,面试的时候可能会遇到.今天也来总结一下,不过该类的网上资料也相当多,也没多少干货,只是习惯性将一些容易遗忘的功能进行整理. lambda 为关键字.filter,m ...
- python中filter、map、reduce的区别
python中有一些非常有趣的函数,今天也来总结一下,不过该类的网上资料也相当多,也没多少干货,只是习惯性将一些容易遗忘的功能进行整理. lambda 为关键字.filter,map,reduce为内 ...
- python中的zip、map、reduce 、lambda、filter函数的使用
飞机票 lambda函数 lambda只是一个表达式,函数体比def简单很多. lambda的主体是一个表达式,而不是一个代码块.仅仅能在lambda表达式中封装有限的逻辑进去. lambda表达式是 ...
- python中的zip、map、reduce 、lambda函数的使用。
lambda只是一个表达式,函数体比def简单很多. lambda的主体是一个表达式,而不是一个代码块.仅仅能在lambda表达式中封装有限的逻辑进去. lambda表达式是起到一个函数速写的作用.允 ...
- Python高阶函数map、reduce、filter、sorted的应用
#-*- coding:utf-8 -*- from selenium import webdriver from selenium.webdriver.support.wait import Web ...
- python中的filter、map、reduce、apply用法
1. filter 功能: filter的功能是过滤掉序列中不符合函数条件的元素,当序列中要删减的元素可以用某些函数描述时,就应该想起filter函数. 调用: filter(function,seq ...
- Python函数式编程中map()、reduce()和filter()函数的用法
Python中map().reduce()和filter()三个函数均是应用于序列的内置函数,分别对序列进行遍历.递归计算以及过滤操作.这三个内置函数在实际使用过程中常常和“行内函数”lambda函数 ...
随机推荐
- Git忽略规则及.gitignore规则不生效的解决办法(转)
在git中如果想忽略掉某个文件,不让这个文件提交到版本库中,可以使用修改根目录中 .gitignore 文件的方法(如无,则需自己手工建立此文件).这个文件每一行保存了一个匹配的规则例如: 1 2 3 ...
- @Autowired注解与@resource注解的区别(十分详细)
背景: 今天下班路上看到一个大货车,于是想到了装配,然后脑海里跳出了一个注解@Autowired(自动装配),于是又想到最近工作项目用的都是@Resource注解来进行装配.于是本着学什么东西都要一钻 ...
- Android 加了自定义Application后报错 Unable to instantiate activity ComponentInfo ClassNotFoundException
在Android自定义一个类继承集成Application后,并在AndroidManifest.xml里面配置了application的name属性为该类名称后报错: Unable to insta ...
- c/c++ 数组 数组的引用,指针数组的引用
c/c++ 数组 知识点 1,数组的声明和初始化,对应代码里的test1和test2 2,char数组,对应代码里的test3 3,数组不可以拷贝和复制,对应代码里的test4 4,指针数组, 数组的 ...
- Scrapy (网络爬虫框架)入门
一.Scrapy 简介: Scrapy是用纯Python实现一个为了爬取网站数据.提取结构性数据而编写的应用框架,Scrapy 使用了 Twisted['twɪstɪd](其主要对手是Tornado) ...
- python模块之sys和subprocess以及编写简单的主机扫描脚本
python模块之sys和subprocess以及编写简单的主机扫描脚本 1.sys模块 sys.exit(n) 作用:执行到主程序末尾,解释器自动退出,但是如果需要中途退出程序,可以调用sys.e ...
- phpstorm设置背景图片
对于这个问题,其实很简单,连续按两下shift键或者是Ctrl+Shift+A键即可.出来的界面如下: 输入set Background Image命令,出现的界面如下: 然后选择图片, 点击ok,即 ...
- 【微信小游戏】【提审的坑】!#¥%&……&&……%¥#@@*()()&%%¥
一.开通了虚拟支付后审核变慢 前两个版本是没有开通虚拟支付的,最快一个半小时就过审了.当时还在暗自嘲笑WX,条款很多,审核却那么松,甚至一度怀疑是不是没有审核直接放.然而第三版提审了之后,一个小时.两 ...
- 我的BRF+自学教程(三):动态技术
开发者们可以在编程中使用各种动态技术,比如RTTS,比如通过动态的类创建和多态来实现功能的平滑扩展.BRF+开发中也存在一些动态手段.本文将介绍3种不同场景下的动态实践方式.其中第一种是纯配置的,第二 ...
- 百度统计api获取数据
需求场景 想要了解每天多少人访问了网站,多少个新增用户,地域分布,点击了哪些页面,停留了多久,等等... 国内用的最多的就是百度统计吧,傻瓜式的注册然后插一段代码到项目里就行了. 最近也在自己的博客里 ...