码迷,mamicode.com
首页 > 编程语言 > 详细

python 内建函数 filter,map和reduce

时间:2016-06-27 17:14:39      阅读:152      评论:0      收藏:0      [点我收藏+]

标签:

     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

标签:

原文地址:http://www.cnblogs.com/shaosks/p/5620260.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!