python 中的filter, map, reduce方法解释
2011-11-30 18:08
633 查看
python 中的filter, map, reduce方法解释:
filter:
filter方法调用:
resultlst = filter(func, seq)
@param func: 可调用对象,接受seq中的元素作为参数
@param seq: 可迭代对象,其中每个元素都要被传入func执行一次;
filter的作用:
对seq可迭代序列或者对象的每一个元素调用一次func,如果func返回值为True,则将该元素插入返回结果列表。反之,则丢弃;
例如:
a = [1,2,3,4,5]
result = filter(lambda x : x > 3, a)
则返回结果是:[4,5]
注意,filter的func可调用对象必须返回一个具有“bool属性”的值。所谓具有bool属性,即是指该返回值要能够与bool真值进行比较。在python中,几乎所有对象都能够判断真假。filter方法本身返回的是seq元素的列表子集。并非func返回的结果,func只是告诉filter在seq中怎么去选取元素构成列表返回(也就是能够使func调用对象返回bool真值的那些元素)
map:
map方法调用:
map(func, seq)
@param func: 可调用对象,接受seq中的元素作为参数;
@param seq: 可迭代对象。其中每个迭代元素都会被传入map函数执行一次;
map方法的作用:
对seq可迭代对象中的每个元素,作为func参数调用一次, 并把func结果添加到返回列表中;
例如:
a = [1,2, 3,4,5]
resultlst = map(lambda x : x + 1, a)
返回结果是:[2,3,4,5,6]
假如我们使用filter中同样的lambda表达式来调用a中的元素,即:
a = [1,2, 3,4,5]
resultlst = map(lambda x : x > 3, a)
返回结果是:[False,False,Flase,True,True]
这就是说,map函数对seq中的每个元素,将一定会有一个与之对应的返回值。这个返回值就是将该元素传递给func后,由func执行返回的结果。
reduce:
reduce方法调用:
reduce(func, seq [, init])
@param func: 特殊的可调用对象。所谓特殊,是该可调用对象要接受两个参数。
@param seq: 可迭代对象,同样,该对象中的每个元素将会被func处理一次;
@param init: 初始值。
reduce方法的作用:
对seq中的从左到右的每两个元素,调用func。然后将本次结果传递到下一次调用。
例如:
a = [1,2,3,4,5]
reduce(lambda x, y : x +y, a)
则返回值为:15
加入我们设定init的值,即:
a = [1,2,3,4,5]
reduce(lambda x, y : x +y, a, 3)
则返回值为:18
注意:传递给reduce的func,必须要能接受两个参数。并返回一个结果。这个结果将会是传递给func进行下次一调用;上面的例子,调用过程是:
1,func(1, 2) 返回 x1
2,func(x1, 3) 返回 x2
3,func(x2, 4) 返回 x3
…...
其实,通过,reduce中func的设计,reduce可以完成map和filter的功能
本文出自 “阳光1314” 博客,请务必保留此出处http://nimbleit.blog.51cto.com/1461447/730031
filter:
filter方法调用:
resultlst = filter(func, seq)
@param func: 可调用对象,接受seq中的元素作为参数
@param seq: 可迭代对象,其中每个元素都要被传入func执行一次;
filter的作用:
对seq可迭代序列或者对象的每一个元素调用一次func,如果func返回值为True,则将该元素插入返回结果列表。反之,则丢弃;
例如:
a = [1,2,3,4,5]
result = filter(lambda x : x > 3, a)
则返回结果是:[4,5]
注意,filter的func可调用对象必须返回一个具有“bool属性”的值。所谓具有bool属性,即是指该返回值要能够与bool真值进行比较。在python中,几乎所有对象都能够判断真假。filter方法本身返回的是seq元素的列表子集。并非func返回的结果,func只是告诉filter在seq中怎么去选取元素构成列表返回(也就是能够使func调用对象返回bool真值的那些元素)
map:
map方法调用:
map(func, seq)
@param func: 可调用对象,接受seq中的元素作为参数;
@param seq: 可迭代对象。其中每个迭代元素都会被传入map函数执行一次;
map方法的作用:
对seq可迭代对象中的每个元素,作为func参数调用一次, 并把func结果添加到返回列表中;
例如:
a = [1,2, 3,4,5]
resultlst = map(lambda x : x + 1, a)
返回结果是:[2,3,4,5,6]
假如我们使用filter中同样的lambda表达式来调用a中的元素,即:
a = [1,2, 3,4,5]
resultlst = map(lambda x : x > 3, a)
返回结果是:[False,False,Flase,True,True]
这就是说,map函数对seq中的每个元素,将一定会有一个与之对应的返回值。这个返回值就是将该元素传递给func后,由func执行返回的结果。
reduce:
reduce方法调用:
reduce(func, seq [, init])
@param func: 特殊的可调用对象。所谓特殊,是该可调用对象要接受两个参数。
@param seq: 可迭代对象,同样,该对象中的每个元素将会被func处理一次;
@param init: 初始值。
reduce方法的作用:
对seq中的从左到右的每两个元素,调用func。然后将本次结果传递到下一次调用。
例如:
a = [1,2,3,4,5]
reduce(lambda x, y : x +y, a)
则返回值为:15
加入我们设定init的值,即:
a = [1,2,3,4,5]
reduce(lambda x, y : x +y, a, 3)
则返回值为:18
注意:传递给reduce的func,必须要能接受两个参数。并返回一个结果。这个结果将会是传递给func进行下次一调用;上面的例子,调用过程是:
1,func(1, 2) 返回 x1
2,func(x1, 3) 返回 x2
3,func(x2, 4) 返回 x3
…...
其实,通过,reduce中func的设计,reduce可以完成map和filter的功能
本文出自 “阳光1314” 博客,请务必保留此出处http://nimbleit.blog.51cto.com/1461447/730031
相关文章推荐
- Pythont特殊语法filter,map,reduce,apply使用方法
- Python中map,reduce,filter和sorted函数的使用方法
- Python中map,reduce,filter和sorted函数的使用方法
- python中map、filter、reduce 函数使用方法
- Python 中的 map, reduce, zip, filter, lambda基本使用方法
- Python 中 map,reduce,和filter 内置函数的方法
- python,scala,java中的map,reduce和filter
- Python特殊语法:filter、map、reduce、lambda
- python map filter reduce
- Python特殊语法:filter、map、reduce、lambda [转]
- Python教程学习简记8--Python 高阶函数 map/reduce filter sorted
- 如何在python3.3用 map filter reduce
- python 中的 filter, lambda, map, reduce 内置函数
- Python进阶:函数式编程(高阶函数,map,reduce,filter,sorted,返回函数,匿名函数,偏函数)...啊啊啊
- Python特殊语法:filter、map、reduce、lambda [转]
- JS--Array的常用方法map、reduce、filter、forEach、indexOf
- python 内置函数filter, lambda, map, reduce
- 5个数组Array方法: indexOf、filter、forEach、map、reduce使用实例
- [置顶] python查漏补缺之二(map,reduce,filter,collections之deque,tempfile之TemporaryFile())
- 不得不知的python高阶函数(Map、Reduce、Filter)