本文共 1584 字,大约阅读时间需要 5 分钟。
在上一篇博客(python lambda函数基础,网址:http://blog.csdn.net/sxingming/article/details/51296284 )中,我们学习了lambda函数的使用。
本文,在使用lambda函数的基础上,我们学习在python2中,filter( ) map( ) reduce( )三个函数的使用。
1》filter( )函数
filter( )函数会对指定序列执行过滤操作。定义如下:
filter(boolFunction,sequence):此函数的功能相当于过滤器。调用一个布尔函数boolFunction来迭代遍历每个sequence中的元素;返回一个能够使boolFunction函数返回值为true的元素的序列。 例子: >>> filter(lambda x:x%2==1,[1,2,3,4,5,6]) [1, 3, 5] >>> filter(lambda x:x>10,[2,4,6,7,8,10,11,14,18]) [11, 14, 18]2》map( )函数
map( )函数会根据提供的函数对指定序列做映射。map函数定义如下:
map(function,sequence1[,sequence2...]) 例子: >>> map(lambda x:None,[1,2,3,4]) [None, None, None, None] >>> map(lambda x:x*2,[1,2,3,4]) [2, 4, 6, 8] >>> map(lambda x:x*2,[1,2,3,[4,5,6]]) [2, 4, 6, [4, 5, 6, 4, 5, 6]] 参数存在多个序列时,会依次以每个序列中相同位置的元素做参数调用function函数。要注意function函数的参数数量,要和map中提供的集合数量相匹配。比如: >>> map(lambda x,y:x+y,[1,2,3,4,5,6],[4,5,6,7,8,9]) [5, 7, 9, 11, 13, 15] map返回的list中第一个元素为,参数序列1的第一个元素加参数序列2中的第一个元素(1 + 4), list中的第二个元素为,参数序列1中的第二个元素加参数序列2中的第二个元素(2+ 5), 依次类推,最后的返回结果为: [5, 7, 9, 11, 13, 15] >>> map(lambda x,y:(x,y),[1,2,3,4],[1,2,3,4]) [(1, 1), (2, 2), (3, 3), (4, 4)] 当函数为None时,返回由元组构成的列表,效果等同于上一条,如下: >>> map(None, [1, 3, 5, 7, 9], [2, 4, 6, 8, 10]) [(1, 2), (3, 4), (5, 6), (7, 8), (9, 10)]3》reduce( )函数
reduce( )函数会对参数序列中元素进行迭代操作。定义如下:
reduce(function,sequence[,init]):function为二元函数,将function作用于sequence序列的元素,每次携带一对(先前的结果以及序列中下一个元素),连续的将现有的结果和序列中下一个值代入function函数中,最后得到一个单一的返回值。如果初始值init给定,则第一次操作取init的值和序列中第一个元素。如果init没有给定,则第一次操作取序列中的前2个元素。
例子:
>>> reduce(lambda x,y:x+y,[1,2,3,4,5]) # init没有给定初始值 15 >>> reduce(lambda x,y:x+y,[1,2,3,4,5],10) # init给定初始值 25(完)