python库函数Map, Filter and Reduce的用法

python中有三个函数式编程极大的简化了程序的复杂性,这里就做一下讨论和记录。

一 Map:应用在链表输入所有元素的函数,它的格式如下所示:

map(function_to_apply, list_of_inputs)

大多数情况下,我们会把一个链表中的元素一个个输入到函数中来获取结果,代码如下所示:

items = [1, 2, 3, 4, 5]
squared = []
for i in items:
    squared.append(i**2)

map就可以把这个函数简化,如下所示:

items = [1, 2, 3, 4, 5]
squared = list(map(lambda x: x**2, items))

大多数情况下,我们把 lambda结合map一起使用,替代传统的输入,如下所示:

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:579817333 
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
def multiply(x):
    return (x*x)
def add(x):
    return (x+x)

funcs = [multiply, add]
for i in range(5):
    value = list(map(lambda x: x(i), funcs))
    print(value)

# Output:
# [0, 0]
# [1, 2]
# [4, 4]
# [9, 6]
# [16, 8]

二 Filter:创建一个让函数返回为True的链表元素,下面是一个简洁的例子:

number_list = range(-5,5)
less_than_zero = list(filter(lambda x: x < 0, number_list))
print(less_than_zero)

number_list = range(-5,5)
less_than_zero = list(filter(lambda x: x != 0, number_list))
print(less_than_zero)

三 reduce:在链表元素的循环计算方面有着广泛的用途,

正常情况下,计算的是这样写的:

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:579817333 
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
product = 1
list = [1, 2, 3, 4]
for num in list:
    product = product * num

# product = 24

在使用reduce的情况下,是这样计算的:

from functools import reduce
product = reduce((lambda x, y: x * y), [1, 2, 3, 4])

# Output: 24

一下子简洁了很多。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章