Python之内建函数Map,Filter和Reduce
Python进阶
map,filter, reduce是python常用的built-in function。 且常与lambda表达式一起用。
其中:
map###
形式:map(function_to_apply, list_of_inputs) -> list
作用:map的作用是将一个序列的元素(通常是list),作为function的参数传入,返回list结构的结果.
用处:当我们想要将一个list的items 一个个按顺序传入一个function中,得到顺序的结果。可以考虑使用map。
demo1
一般的写法:
items = [1, 2, 3, 4, 5]
squared = []
for i in items:
squared.append(i**2)
demo2:
使用map的简洁写法:
def squarefun(x):
return x**2
items=[1,2,3,4,5]
squared = list(map(squarefun,items))
demo3:
使用lambda和map的最简洁写法:
因为lambda就可以表达一个function。
items = [1, 2, 3, 4, 5]
squared = list(map(lambda x: x**2, items))
result:
[1,4,9,16,25]
以上三个demo的作用是完全一样的,但是无疑demo3是最简洁的。
reduce###
形式:reduce(function, sequence) -> value
作用:reduce的作用是将sequence的元素(通常是list),一个接一个的作为参数的传入function(只能是两个参数的运算)中进行运算,上一个结果作为下一次运算的一个参数,另一个参数从sequence返回一个最终的结果。
demo4:
result = reduce((lambda x, y: x + y), [1, 2, 3, 4, 5])
#等同于
result2 = ((((1+2)+3)+4)+5)
# Output: 15
filter###
形式:filter(function or None,sequence) -> list,tuple or string
作用:返回那些sequence中的那些item,使得function(item)为真。如果function为None,则直接返回为真的item,返回类型和sequence的类型一致。
number_list = range(-5, 5)
less_than_zero = list(filter(lambda x: x < 0, number_list))
# Output: [-5, -4, -3, -2, -1]