Python学习:映射函数(map)和函数式编程工具(filter和reduce)

在序列中映射函数map

map函数会对一个序列对象中的每一个元素应用被传入的函数,并且返回一个包含了所有函数调用结果的一个列表。

例1:

def sum(x):
    return x + 10

L1 = [1,2,3,4,5,6,7]
L = map(sum, L1)
#结果为[11, 12, 13, 14, 15, 16, 17]

map还有更高级的使用方法,例如提供了序列作为参数,它能够并行返回分别以每个序列中的元素作为函数对应参数得到的结果的列表。如例2所示。

例2:

def sum(x, y):
    return x + y

L1 = [1,2,3,4,5,6]
L2 = [10,11,12,13,14,15]
print map(sum, L1, L2)
#结果为[11, 13, 15, 17, 19, 21]

注意:map调用与列表解析很相似,但是map对每一个元素都应用了函数调用而不是任意的表达式。因为这点闲置,从某种意义上来说,它成为了一个不太通用的工具,尽管如此,在某些情况下,目前map比列表解析运行起来更快。它也比for循环更快。

函数式编程工具(filter和reduce)

map函数是Python用来进行函数式编程的这类工具中最简单的内置函数代表:函数式编程的意思就是对应序列应用一些函数的工具。例如,基于某一侧式函数过滤出一些元素(filter),以及对每对元素都应用函数并运行到最后结果(reduce)。由于range和filter都返回可迭代对象,在Python3.0中,它们需要list调用来显示其所有结果。

序列中的元素若其返回值为真的话,将会被键入到结果的列表中。就像map,这个函数能够用for 循环来等效,但是它是内置的,运行起来比较快。

L = range(-10,10)
print filter(lambda x:x>4, L)
#结果为[5, 6, 7, 8, 9]

序列中的元素若其返回值为真的话,将会被键入到结果的列表中。就像map,这个函数能够用for 循环来等效,但是它是内置的,运行起来比较快。

res = []
for x in range(-10,10):
    if x >5:
        res.append(x)

print(res)
#结果为[5, 6, 7, 8, 9]

reduce在Python2.6中只是一个简单的内置函数,但是在Python3.0中则位于functools模块中,要更复杂一些。

>>>reduce((lambda x,y: x+y), [1,2,3,4,5])
15
>>>reduce((lambda x,y: x*y), [1,2,3,4,5])
120
时间: 2024-10-01 19:33:26

Python学习:映射函数(map)和函数式编程工具(filter和reduce)的相关文章

python学习09-函数和函数式编程

函数和函数式编程 函数会向调用者返回一个值, 而实际编程中大偏函数更接近过程,不显示地返回任何东西.把过程看待成函数的语言通常对于"什么都不返回"的函数设定了特殊的类型或者值的名字.这些函数在 c 中默认为"void"的返回类型,意思是没有值返回. 在 python 中, 对应的返回对象类型是none. 简而言之,当没有显式地返回元素或者如果返回 None 时, python 会返回一个 None.那么调用者接收的就是 python 返回的那个对象,且对象的类型仍然

Python学习总结之五 -- 入门函数式编程

函数式编程 最近对Python的学习有些怠慢,最近的学习态度和学习效率确实很不好,目前这种病况正在好转. 今天,我把之前学过的Python中函数式编程简单总结一下,分享给大家,也欢迎并感谢大家提出意见. 首先,我们学习函数式编程时,需要知道一个概念:高阶函数.那么到底什么是高阶函数呢?把函数作为参数传入,这样的函数就称为高阶函数.而函数式编程就是指这种高度抽象的编程范式. 正文 接下来,我简单介绍以下四种函数的用法:map/reduce   filter   sorted   lambda 在这

python学习第十一天 -- 函数式编程

在介绍函数式编程之前,先介绍几个概念性的东西. 什么是函数式编程? 函数式编程的特点: 1.把计算视为函数而非指令; 2.纯函数式编程:不需要变量,没有副作用,测试简单; 3.支持高阶函数,代码简洁. 什么是高阶函数? 能接收函数做参数的函数,称为高阶函数. 高阶函数的特点: 1.变量可以指向函数 2.函数的参数可以接收变量 3.一个函数可以接收另一个函数作为参数 Python支持的函数式编程? 1.不是纯函数式编程:允许有变量 2.支持高阶函数:函数也可以作为变量传入 3.支持闭包:有了闭包就

Python学习之路:函数式编程介绍&高阶函数

函数式编程:一种抽象程度很高的范式,重要特点:输入是确定的,输出就是确定的: Python对函数式编程,部分支持: 高阶函数: def add(x,y,f):#函数本身传给函数,就是高阶函数 return f(x)+f(y) res = add(3,-6,abs) print(res)

【Python学习之旅】---函数式编程(函数尾调用、map函数、filter函数、reduce函数)

执行结果: 执行结果: 执行结果: 执行结果: 原文地址:https://www.cnblogs.com/chenyuxia/p/11980040.html

函数式编程工具:filter和reduce

# -*- coding: utf-8 -*- #python 27 #xiaodeng #函数式编程工具:filter和reduce #python内置函数中,map函数是用来进行函数式编程这类工具最简单的内置函数代数 #函数式编程含义: #一种编程范式,也就是如何编写程序的方法论,是一种编程思想. #无法给予准确的定义 #函数式编程的编程风格强调表达式计算,而不是执行命令. #常见函数式编程 #filter:基于某一测试函数过滤出一些元素 #reduce:对每对元素都应用函数并运行到最后结果

Python进阶学习(一)——函数式编程

1.函数式编程 函数:function 函数式:functional,一种编程范式 函数≠函数式 函数式编程的特点: 把计算视为函数而非指令. 纯函数式编程:不需要变量,没有副作用,测试简单. 支持高阶函数,代码简洁. Python支持的函数式编程: 不是纯函数式编程:允许有变量. 支持高阶函数:函数key作为变量传入. 支持闭包:有了闭包就能返回函数. 有限度的支持匿名函数. 2.高阶函数 变量可以指向一个函数. >>> abs(-10) 10 >>> abs <

《JS权威指南学习总结--8.8 函数式编程和8.8.1使用函数处理数组》

内容要点:    和Lisp.Haskell不同,JS并非函数式编程语言,但在JS中可以像操控对象一样操控函数,   也就是说可以在JS中应用函数式编程技术.ES5中的数组方法(诸如map()和reduce())就可以非常适用于函数式编程风格. 一.使用函数处理数组    假设有一个数组,数组元素都是数字,我们想要计算这些元素的平均值和标准差.    若用非函数式编程风格的话,代码是这样:         var data = [1,1,3,5,5]; //这里是待处理的数组        //

Python的高级特性4:函数式编程

函数式编程的核心就是把函数当成对象来进行编程. 有两个常用到的方法:map/reduce,filter,其中map和filter是内建方法,而reduce不是,所以需要import相关模块. map接收两个参数,第一个参数是函数(处理办法),第二个参数是一个可迭代对象,而map可以把第二个参数的变量映射到函数中一一进行处理,结果以list形式返回. In [147]: def f(x): .....: return x*x .....: In [148]: r = map(f,[1,2,3,4,