python 内建函数 filter,map和reduce

Posted shaomine

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 内建函数 filter,map和reduce相关的知识,希望对你有一定的参考价值。

     python 内建函数 filter,map和reduce, 三个函数比较类似,都是应用于序列的内置函数,常见的序列包括list、tuple、str等。而且三个函数都可以和lambda表达式结合使用。下面分别介绍。

1、filter

filter(bool_func,seq):此函数的功能类似过滤器。调用一个布尔函数bool_func来迭代遍历每个seq中的元素;返回一个使bool_seq返回值为true的元素的序列。

例如 : 从[1,2,3,4,5,6,7,8,9]序列中获取被3整除的序列

print filter(lambda x: x%3 == 0,[1,2,3,4,5,6,7,8,9])

结果为:[3, 6, 9]

2、map

map(func,seq1[,seq2...]):将函数func作用于给定序列的每个元素,并用一个列表来提供返回值;如果func为None,func表现为身份函数,返回一个含有每个序列中元素集合的n个元组的列表。

print map( lambda x, y: x * y, [1, 2, 3], [4, 5, 6])

结果:[4, 10, 18]

print map( lambda x, y: ( x * y, x - y), [4, 5, 6], [3, 2, 1] )

结果:[(12, 1), (10, 3), (6, 5)]

print map(lambda x : x * 3,[1,2,3,4,[3,2,1]]) 

结果:[3, 6, 9, 12, [3, 2, 1, 3, 2, 1, 3, 2, 1]]  因为[3,2,1]是子序列,乘以3所以结果包含三组[3,2,1]

 

利用map()函数,把用户输入的不规范的英文名字,变为首字母大写,其他小写的规范名字。输入:[‘adam‘, ‘LISA‘, ‘barT‘],输出:[‘Adam‘, ‘Lisa‘, ‘Bart‘]

input =[‘adam‘, ‘LISA‘, ‘barT‘]

print map(lambda x:x.capitalize(), input) # 这里调用了字符串内置函数capitalize(首字母大写,其余小写)

结果:[‘Adam‘, ‘Lisa‘, ‘Bart‘]  

 

3、reduce

reduce(func,seq[,init]):func为二元函数,将func作用于seq序列的元素,每次携带一对(先前的结果以及下一个序列的元素),连续的将现有的结果和下一个值作用在获得的随后的结果上,最后减少我们的序列为一个单一的返回值:如果初始值init给定,第一个比较会是init和第一个序列元素而不是序列的头两个元素。

例如: 

print reduce(lambda x,y : x * y, [1,2,3,4,5,6])

结果:720

n=5
print reduce(lambda x,y: x * y,range(1,n)) #n的阶乘,

当n=5时,结果为:24

print reduce(lambda x,y: x * y,range(1,n),10) #n的阶乘的10倍

结果:240

以上是关于python 内建函数 filter,map和reduce的主要内容,如果未能解决你的问题,请参考以下文章

Python高阶函数_map/reduce/filter函数

Python3之高阶函数filter

Python函数式编程高级函数2/3—filter

Python---filter

Python filter

Python中的filter()函数的用法