这三个内置函数还是非常有用的, 在工作中用的还不少, 顺手, 下面一一进行介绍
1,filter
语法: filter(function,iterable)
解释: 把迭代器通过 function 函数进行过滤出想要的数据
用法: 可以设置一个迭代器, 然后把相同属性的元素过滤出来, 如下所示
- list1 = [1,2,3,4,5,6,7,8,9,10]
- listTemp = filter(lambda x:x%2==0,list1)
上面的意思是过滤出偶数(即被 2 整除的数), 其中使用了匿名函数 lambda, 非常简便, 当然我们也可以自己顶一个函数来实现
另外在 python2.* 版本中是直接返回 list 的, 但在 python3.* 中是返回一个迭代器
2,map
语法: map(function,*iterable)
解释: 把迭代器 (或多个迭代器) 通过 function 函数得到结果
用法: 可以设置一个或多个迭代器, 然后把相同位置 (如果为多个迭代器) 的元素通过 function 函数得到最终结果, 如下所示:
- # 一个迭代器
- list1 = [1,2,3,4,5,6,7,8,9]
- listTemp = map(lambda x:x*x,list1)
- # 多个迭代器
- list2 = [11,12,13]
- list3 = [21,22,23,24,25]
- listTemp = map(lambda x,y,z:x+y+z,list1,list2,list3)
多个迭代器的时候, 是对后面所有的迭代器进行处理(lambda 函数的参数个数必须和后面迭代器的个数一致), 这里我们又使用了匿名函数 lambda
同 filter 一样, 在 python2.* 版本中是直接返回 list 的, 但在 python3.* 中是返回一个迭代器
3,reduce
语法: reduce(function,iterable)
解释: 把迭代器通过 function 进行累积计算
用法: function 必须包含俩个参数, 第一个参数表示初始值, 第二个参数表示迭代器的每个元素, 如下:
- list1 = [1,2,3,4,5]
- listTemp = reduce(lambda x,y:x+y*y,list1)
- print(listTemp)
通过 print 可以看出使用的是 python3.*, 这里要注意的是, reduce 函数在 3.* 版本里面已经移动到 functools 里面
这里我们再次使用了 lambda 匿名函数, 非常好用, 函数式意思是把 list1 中的元素自乘之后再相加
python 之有用的 3 个内置函数(filter/map/reduce)
来源: http://www.bubuko.com/infodetail-2687040.html