前言
该文档旨在厘清map/reduce函数的定义、用法及特性。
概述
Python内建了map()和reduce()函数,通过这两个函数可以达到循环迭代的效果。
函数定义、特性及用法示例
1.map()函数:map(function,iterable)
简介:map函数是python内置的高阶函数,是典型的函数式编程;
参数:map()函数接收两个参数,第一个参数是函数,第二个参数是Iterable(可迭代的),如字符串、字典等。
作用:map()函数将函数(function)依次映射于指定的序列(iterable);
用法示例:
栗子1:将函数f(x)=x^2,依次作用在list[1, 2, 3, 4, 5, 6, 7, 8, 9]上。
def f(x):
return x * x
r = map(f,[1, 2, 3, 4, 5, 6, 7, 8, 9])
list(r)
#r返回的结果是一个Iterator,是一个惰性序列,因此通过list()函数让它把整个序列都计算出来并返回一个list
View Code
惰性序列解释:
Python的iterator是一个惰性序列,意思是表达式和变量绑定后不会立即进行求值,而是当你用到其中某些元素的时候才去求某元素对的值。
惰性是指,你不主动去遍历它,就不会计算其中元素的值。
惰性序列及延迟计算参见:
https://blog.csdn.net/Solo95/article/details/78834041
以上该栗子亦可以通过循环实现,具体如下:
#循环实现
def f(x):
return x **2
L = []
for n in [1, 2, 3, 4, 5, 6, 7, 8, 9]:
L.append(f(n))
print(L)
View Code
map()函数作为高阶函数,事实上它把运算规则抽象了,因此,我们不但可以计算简单的f(x)=x^2,还可以计算任意复杂的函数。
栗子2:把list的所有数字转换为字符串
list(map(str,[1, 2, 3, 4, 5, 6, 7, 8, 9]))
View Code
2.reduce()函数:reduce(function,iterable[,initializer])
简介:reduce()函数对参数序列中的元素进行累积
参数:reduce()函数接收两个参数,第一个参数是函数,第二个参数就是需要累计计算的序列;
作用:reduce把一个函数作用在序列[x1, x2, x3, ...]上,把结果继续和序列的下一个元素做累计计算,其效果就是:reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4)
用法示例:
先占个坑。。。等一下再补上(占坑大王
标签:map,函数,python,list,reduce,参数,序列