当前位置:首页 > 开发 > 编程语言 > 编程 > 正文

一个用到filter,map,reduce的小问题

发表于: 2015-06-24   作者:david_je   来源:转载   浏览次数:
摘要:      今天碰到一个小程序,正好可以用到Python的filter,map和reduce方法。感觉很有意思,顺便就写下来吧。问题是这样的:      两个小伙伴,数字214和77感觉自己的运气一直不好,想来想去,原来是和7有关,如下:       2+1+4=7 77%7=11 7%11=77

     今天碰到一个小程序,正好可以用到Python的filter,map和reduce方法。感觉很有意思,顺便就写下来吧。问题是这样的:

     两个小伙伴,数字214和77感觉自己的运气一直不好,想来想去,原来是和7有关,如下:

     

2+1+4=7
77%7=11
7%11=77

 

 

      满足如下规则就是和7有关,

 

      

1. 本身是7的倍数
2. 数字里包含7
3. 数字各位累加时7的倍数

 

 

 

下一个小程序,计算出一定范围内和7不相关的数字的平方和。

 

    题目很简单,可以用各种语言实现,这里的demo是Python实现的。

 

    我们可以把这个过程分成这样几个步骤:

  •     产生一定范围内的数字
  •     去掉和7相关的数字
  •     计算平方和

 

    第一步很简单:

    range(), 10以内的range(10), 即: [1,2,3,4,5,6,7,8,9]

 

     第二部过滤:

     filter(function or None, sequence) -> list, tuple, or string

     reduce(function, sequence[, initial]) -> value

    function如下:

    

def handle(num,noluck=7):
	if num %noluck==0:
		return False
	l = [string.atoi(x) for x in str(num)]
	for num in l:
		if num%noluck==0:
			return False
	if reduce(lambda x,y:x+y, l)%noluck==0:
		return False
	return True

 

 

     这样去掉之后的结果是:filter(handle, range(10))

 

      第三部是计算:

      map(function, sequence[, sequence, ...]) -> list

     

reduce(lambda x,y: x+y, map(lambda x:x*x,filter(handle, range(10))))

 这里还用到了lambda和表达式推导。是不是很有意思?只有真正玩python的人才知道其中好玩的地方 :-)

    
 

 

一个用到filter,map,reduce的小问题

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
map-reduce 过程 中间绿线区域就是shuffle(“洗牌”)过程:map之后,reduce之前的过程。 可以这样
完成了第一个mapReduce例子,记录一下。 实验环境: hadoop在三台ubuntu机器上部署 开发在window7上
阿里接到一个电话说练习和比赛智能二选一, 真的很伤心, 练习之前积极老龄化的权利. 要总结ODPS下一
从在自己的win7下面装好虚拟机,然后在虚拟机上面安装hadoop,然后再安装hadoop-eclipse插件,过去
从在自己的win7下面装好虚拟机,然后在虚拟机上面安装hadoop,然后再安装hadoop-eclipse插件,过去
map/reduce 过程的认识 最初我一直简单的以为map的工作就是将数据打散,而reduce就是将map打散后的
http://www.cnblogs.com/xuqiang/archive/2011/05/28/2060854.html <1>.并行计算简介 计算机
MapReduce是一种编程模型,始于:Dean, Jeffrey & Ghemawat, Sanjay (2004). "MapReduce: Simplifie
一、环境 1、hadoop 0.20.2 2、操作系统Linux 二、背景 1、为何使用Partitioner,主要是想reduce的
一、背景 今天采用10台异构的机器做测试,对500G的数据进行运算分析,业务比较简单,集群机器的结构
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号