map函数、filer函数、reduce函数的用法和区别

Map函数


 

map函数的用法如下:

def add_one(x):
    return x+1

#使用普通函数
v1 = map(add_one,[1,2,3])
v1 = list(v1)
print(v1)   #打印结果为[2, 3, 4]
  
#使用匿名函数,代码更为简洁  
v2 = map(lambda x:x+1,[1,2,3])
v2 = list(v2)
print(v2)   #打印结果为[2, 3, 4]

从代码可以看出,map()函数有两个传参,第一个为函数名,第二个为可迭代对象,效果是将可迭代对象的每一个元素放入函数中执行,然后把函数执行的返回值联合一起组成一个新的可迭代对象

 

filter函数


 

filter函数的用法如下:

 

def judge_sb(x):
    return x.startswith("sb")

#使用普通函数
v1 = filter(judge_sb,sb_list)
v1 = list(v1)
print(v1)  #打印结果为['sb_001', 'sb_002']

#使用匿名函数,代码更为简洁
v2 = filter(lambda x:x.startswith("sb"),sb_list)
v2 =list(v2)
print(v2)   #打印结果为['sb_001', 'sb_002']

 

从代码可以看出,filter()函数有两个传参,第一个为函数名,第二个为可迭代对象,效果是将可迭代对象的每一个元素放入函数中执行,然后把函数执行的返回值为真,就把那个传参保留,如果为假就舍弃,最终将传参联合一起组成一个新的可迭代对象

reduce函数


 

reduce函数的用法如下:

from functools import reduce   #要导入模块
def add(x,y):
     return x+y

#使用普通函数
v1 = reduce(add,[1,2,5,7])
print(v1)   #打印结果为15

#使用匿名函数,代码更为简洁
v2 = reduce(lambda x,y:x+y,[1,2,5,7])
print(v2)   #打印结果为15

从代码可以看出,filter()函数有两个传参,第一个为函数名,第二个为可迭代对象,效果是将可迭代对象的每一个元素进行类似累加、累乘这种压缩的操作,最后返回一个值

总结


 

#处理序列中的每个元素,得到的结果是一个可迭代对象,其元素个数及位置与原来一样

map()

#遍历序列中的每个元素,判断每个元素得到布尔值,如果True则留下来

filter()

#处理一个序列,然后把序列进行合并操作

reduce()

 

posted @ 2018-03-30 20:33  代码螺丝钉  阅读(286)  评论(0编辑  收藏  举报