python系列二filter()、map()和reduce()

2、Python中filter()、map()和reduce()的区别
2.1、概述:
filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。
2.1.1.语法:filter(function, iterable)
 该方法接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判,然后返回
True 或 False,最后将返回 True 的元素放到新列表中。

2.1.2 案例:判断列表中奇数

from functools import reduce

def is_odd(i):
return i%2==1

newlist=filter(is_odd,[1,3,89,34,4,6,7])
print(list(newlist))

 

map() 会根据提供的函数对指定序列做映射
2.2.1.语法:map(function, iterable, ...)
第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的新列表。
2.2.2. 案例: 提供了两个列表,对相同位置的列表数据进行相加

result = map(lambda x,y:x+y,[1,2,43,4,5],[1,4,3,5])
print(list(result))

 reduce() 函数会对参数序列中元素进行累积。
2.3.1.语法:reduce(function, iterable[, initializer])
 函数将一个数据集合(链表,元组等)中的所有数据进行下列操作:用传给 reduce 中的函数 function(有两个参
 数)先对集合中的第 1、2 个元素 进行操作,得到的结果再与第三个数据用 function 函数运算,最后得到一个结果。
python3中将 reduce 放在functools模块中了
2.3.2. 案例: 提供了两个列表,对相同位置的列表数据进行相加

result=reduce(lambda x,y:x+y,[1,2,4,5])
print(result)

 

 2.4、应用场景:
 面试题: 分别使用map,reduce,filter函数完成下面的任务
1)、计算1-100的和

result=reduce(lambda x,y:x+y,range(1,101))
print(result)

 

2)、1-10,求每个数字的平方

list1=map(lambda x:x*x,range(1,11))
print(list(list1))


3)、 {“a”,”ab”,”abc”,”bc”,”cd”}输出含有C字符的元素,返回值是list

list2=filter(lambda x: "c" in x,{"a","ab","abc","bc","cd"})
print(list(list2))

 

posted @ 2019-10-24 19:56  sunshine_coast  阅读(198)  评论(0编辑  收藏  举报