`
david_je
  • 浏览: 373213 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

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

阅读更多

     今天碰到一个小程序,正好可以用到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的人才知道其中好玩的地方 :-)

    
 

 

分享到:
评论

相关推荐

    详解JavaScript中数组的reduce方法

    js函数中有三个在特定场合很好用的函数:...而数组经常用到的方法有push、join、indexOf、slice等等,但是有一个经常被我们忽略的方法:reduce,这个方法简直强大的不要不要的。下面通过这篇文章来一起学习学习吧。

    常用到的一些JS

    3. **对象与数组**:对象创建与访问、数组方法(push、pop、shift、unshift、slice、splice、concat、join、map、filter、reduce等)。 4. **DOM操作**:获取元素(getElementById、getElementsByClassName、...

    有趣的JavaScript玩具问题___下载.zip

    4. **数组操作**:涉及数组的方法,如map、filter、reduce、forEach等,用于数据处理和分析。 5. **对象和原型**:理解JavaScript中的对象和原型链,学习如何创建和操作对象,以及原型继承。 6. **函数式编程**:...

    7.Python中的函数与函数式编程下1

    `reduce`函数用于对序列进行累积操作,例如累加或串联,它需要一个函数和一个可迭代对象,函数接受两个参数并返回单一结果,然后这些结果会不断应用到序列的元素上。 `sorted`函数也是高阶函数,它可以对任何可迭代...

    swift-LeetCodeSwift用Swift代码解决LeetCode上算法问题

    例如,数组的操作(如map、filter、reduce)在处理数组类问题时尤其重要。同时,Swift的泛型允许编写通用的代码,可以处理多种类型的数据,这对于编写复用性强的算法模块非常有帮助。 闭包是Swift中的一大特色,它...

    Lambda和高阶函数_刘新宇.pdf

    例如,JavaScript中的`Array.prototype.map`就是一个高阶函数,它接受一个函数作为参数,对数组的每个元素应用该函数,然后返回一个新的数组。 在互联网开发中,Lambda和高阶函数的应用非常广泛。比如,前端框架...

    Python练手小项目.zip

    5. **函数式编程**:使用`map()`, `filter()`, `reduce()`等函数,以及lambda表达式和列表推导式。 6. **异常处理**:理解并使用try/except/finally语句进行错误处理。 7. **数据处理**:如果项目涉及数据分析,...

    python-leetcode常用函数.docx

    7. **map()**: `map()`函数接受一个函数和一个序列,将函数应用于序列的每个元素,返回一个新的序列。如`map(lambda x: x * 2, nums)`将数组`nums`中的每个元素都乘以2。 8. **filter()**: `filter()`函数根据提供...

    python,python-project-euler.rar

    2. **函数式编程**:Python支持函数式编程概念,如高阶函数、map()、filter()和reduce(),这在处理Project Euler问题时非常有用,特别是对于简化代码和进行数学操作。 3. **模块和库**:Python拥有丰富的标准库和第...

    这是一个用 java 与 python语言完成剑指 offer 上编程题的解法仓库,所有做法均编译通过。.zip

    2. **函数式编程**:Python支持高阶函数,如map、filter和reduce,可以方便地处理序列和列表。 3. **模块与库**:Python有丰富的标准库和第三方库,如NumPy、Pandas和NetworkX,可以用于科学计算、数据分析和图算法...

    一些实用的JS 都是平常用到很多的脚本

    6. **数组方法**:如push、pop、shift、unshift、slice、splice、concat、indexOf、forEach、map、filter、reduce等,熟练掌握这些方法能高效处理数组数据。 7. **事件处理**:JavaScript能够响应用户的交互,如...

    基于原生JavaScript实现的扫雷小游戏.zip

    7. **数组方法**:`map`、`filter`、`reduce`等数组方法可能用于处理游戏中的数组数据,比如计算相邻雷的数量。 【前端渲染】 1. **HTML布局**:创建游戏面板,使用`<table>`或CSS Grid布局,每个格子由一个单元格...

    将Matrix焊接成型,伙计!_PHP_下载.zip

    在PHP中处理矩阵或数组,开发者可能会用到内置的数组函数,如array_map()、array_filter()、array_reduce()等,以及可能自定义的类来实现矩阵的乘法、加法、转置等操作。如果MatrixMate是一个高级的库,它可能封装了...

    javascript小例子

    例如,使用map、filter和reduce等方法处理数组。 9. **模块化** ES6引入了模块系统,允许我们将代码组织成模块,以提高代码复用性和可维护性。如果这个例子包含多个文件,那么可能演示了如何导入和导出模块。 10....

    python3实用编程技巧进阶(1套课程)\第2章-1 PYTHON如何在列表,字典,集合中根据条件筛选数据 Python课程

    此外,Python还提供了其他高级工具,如lambda表达式、map()和reduce()函数,用于处理更复杂的数据筛选和操作。在实际应用中,可能会结合这些工具进行更复杂的筛选和转换,例如,对字典的键进行排序,或对列表中的...

    js代码-10.3 限定组合

    总结一下,"js代码-10.3 限定组合"是一个关于使用JavaScript实现数组组合操作的问题,可能涉及到数组的高级方法如map、filter、reduce,以及递归和回溯算法。`main.js`是实现代码,`README.txt`是对代码的解释和使用...

    简单的水箱实用程序应用程序JavaScript源代码.zip

    函数式编程也可能有所体现,例如使用map、filter、reduce等高阶函数对数据进行处理。这些函数可以简化代码并减少副作用,使得代码更加简洁和易于测试。 考虑到这是一个实用程序,它可能还包括错误处理和异常捕获,...

    大计模考.zip

    4. 函数式编程:如map、filter、reduce等,有助于编写简洁高效的代码。 5. 多线程与多进程:在处理大数据时,通过并行化提高计算效率。 6. 错误和异常处理:确保程序在遇到问题时能够正常终止或提供反馈。 7. 模块和...

    大数据课程-Scala编程基础-4.Scala数据结构_lk_edit.ppt

    理解这些集合的特性和操作函数对于编写高效的代码至关重要,例如`filter`、`map`和`reduce`等函数。 学习Scala的数据结构,特别是数组和集合,有助于理解和实现各种算法,比如在大数据处理中常见的WordCount案例。...

    华中科技大学计算机学院-课程实验-函数式编程-内含源码和说明书.zip

    例如,通过实现map、filter和reduce等抽象操作,学生可以理解如何通过函数来处理数据,而不是依赖于变量的状态。 “labs”可能包含了多个实验任务,每个任务都设计了不同的问题,旨在引导学生逐步探索函数式编程的...

Global site tag (gtag.js) - Google Analytics