函数式编程以及map、reduce、filter函数
来源:互联网 发布:mac酷我音乐桌面歌词 编辑:程序博客网 时间:2024/06/08 03:59
函数式编程以及map、reduce、filter函数
可迭代对象:str , list , tuple
map 映射,map函数是指将一个对象(可迭代)中的每个子元素分别按照映射关系处理
filter 过滤,filter函数是指将一个对象(可迭代)象的每个子元素按照过滤条件进行过滤,保留过滤结果为True的子元素
reduce 归纳,reduce函数是指将一个对象(可迭代)的每个子元素按照归纳算法进行整合,得出一个数据
1. filter函数
函数特性:
- 将一个对象(可迭代)象的每个子元素按照过滤条件进行过滤,保留过滤结果为True的子元素
- 如果将得出的结果(可迭代对象)用list()组成一个列表,则得出的列表与原对象的子元素数量和索引不同
格式:
filter(function,iterable_object)
filter函数返回的结果是一个可迭代对象,可使用 list() 来将迭代对象组成列表
filter函数的演化过程:
fruits = ['apple','pear','peach','banana','orange']def startwith_p(i): if i.startswith('p'): return idef endwith_e(i): if i.endswith('e'): return idef filter_choose(func,array): choice = [] for a in array: if not func(a): choice.append(a) return choiceprint(filter_choose(endwith_e,fruits))print(filter_choose(startwith_p,fruits))# ['pear', 'peach', 'banana']# ['apple', 'banana', 'orange']
可转化成以下简写形式
def filter_choose(func,array): choice = [] for a in array: if not func(a): choice.append(a) return choiceprint(filter_choose(lambda n:n.startswith('p'),fruits))# ['apple', 'banana', 'orange']
可转化成内置的filter函数
print(list(filter(lambda x:not x.startswith('p'),fruits)))# ['apple', 'banana', 'orange']
2. map函数
函数特性:
- 将一个对象(可迭代)中的每个子元素分别按照映射关系处理
- 如果将得出的结果(可迭代对象)用list()组成一个列表,则得出的列表与原对象的子元素数量和索引都相同
格式:
map(funcion,iterable_object)
其中,func 为函数:如果处理方法简单可使用匿名函数
map函数返回的结果是一个可迭代对象,可使用 list() 来将迭代对象组成列表
例1:
li = [1,234,36,23,15]print(map(lambda x:x/2,li))print(list(map(lambda x:x+20,li)))# <map object at 0x00000000011DB4A8># [21, 254, 56, 43, 35]
例2
msg = 'alex'print(list(map(lambda x:x.upper(),msg)))# ['A', 'L', 'E', 'X']
例3
dic = {'name':'alex','age':'18','hobby':'apple'}print(list(map(lambda x:x.upper(),dic.values())))# ['ALEX', '18', 'APPLE']
3. reduce函数
函数特性:
- 将一个对象(可迭代)的每个子元素按照归纳算法进行整合,得出一个数据
- 得出的结果是一个固定的不可迭代对象
- 可指定初始值,初始值默认为空
- reduce函数需要调用functools工具中的reduce模块,执行语句:
from functools import reduce
格式:
reduce(function,iterable_object,init_value=None)
reduce函数返回的结果是一个不可迭代的固定值
例1:
from functools import reducesequence = [1,2,3,10]print(reduce(lambda x,y:x*y,sequence))# 60
例2:指定初始值
from functools import reducesequence = [1,2,3,10]print(reduce(lambda x,y:x*y,sequence,10))# 600
阅读全文
0 0
- 函数式编程以及map、reduce、filter函数
- python函数式编程 map、reduce、filter
- python函数式编程-----序列处理函数:map(),filter(),reduce()
- pyhton函数式编程函数map、reduce、filter、lambda
- map、filter、reduce函数
- python的map、filter、reduce函数以及列表解析式
- Python函数式编程学习:lambda, map, reduce, filter
- Python 函数式编程之 filter()、map()和reduce()
- Python函数式编程学习:lambda, map, reduce, filter
- python中函数式编程map、reduce、filter的用法
- Python函数式编程-map()、zip()、filter()、reduce()、lambda()
- python函数式编程(一)map/reduce、filter、sorted
- Python函数式编程(map、reduce、filter、lambda)
- Swift函数式编程之Map&Reduce&Filter
- Swift函数式编程之Map&Reduce&Filter
- Python函数式编程之map/reduce/filter进阶
- Python函数式编程之lambda表达式,reduce函数、map函数、filter函数
- map、reduce、filter内置函数
- MySQL之char、varchar和text的设计
- 快速排序
- yarn结构-2.9.0
- nfs文件共享
- ebean的学习
- 函数式编程以及map、reduce、filter函数
- ARM指令中如何判断一个立即数是有效立即数
- 二、认识云服务器ECS
- ubuntu14.04confluence和jira破解版插件安装
- 生成对抗网络
- Android图文详解属性动画
- 聚合aggregattions
- 【Scikit-Learn 中文文档】随机梯度下降
- JAVA线程池