第七章第6讲:python的高阶函数-map、reduce、filter

1.map()函数:

map()函数接收2个参数,一个是函数,一个是序列(list)
map()将传入的函数依次作用到序列的每个元素上,并把结果作为新的序列(list)
# 案例要求:讲一个纯数字的list中的值,都变成平方,且放在另一个list中
# 方式1:通过传统的for方式实现要求
print("方式1:")
def f(x):
    return x * x
L = []
for n in [1,2,3,4]:
    L.append(f(n))
print(L)
# =========================
# 方式2:通过map()函数
print("方式2:")
def f(x):
    return x * x
print(list(map(f,[1,2,3,4])))

结果:
方式1:
[1, 4, 9, 16]
方式2:
[1, 4, 9, 16]

2.reduce()函数:

reduce()函数是把一个函数作用到一个序列上(list)
reduce()函数必须接收2个参数,reduce把结果继续和list中的下一个元素累计计算
from functools import reduce
def add(x,y):
    return x + y
# 案例1
print("案例1:")
L = [1,2,3,4]
print(reduce(add,L))

# 案例2
print("案例2:")
M = [1,2,3]
def fn(x,y):
    return x * 10 + y
L = [1,2,3]
print(reduce(fn,L))


结果:
案例1:
10
案例2:
123

3.filter()函数

filter()也是要接收2个参数,1个是函数,1个是list
filter()函数把传入的函数依次作用到每一个元素上,然后根据返回值是true还是false来决定是否显示(是否丢弃)
# 案例1:模拟一个list,删掉其中的偶数,只保留奇数
print("案例1:")
def div(n):
    return n % 2 == 1
L = [1,2,3,4,5,6,7]
print(list(filter(div,L)))

# 案例2,:把一个list中的空字符串去掉
print("案例2:")
def Noempty(s):
    return s and s.strip()
L = ['L','','E',None,'0','']
print(list(filter(Noempty,L)))

结果:
案例1:
[1, 3, 5, 7]
案例2:
['L', 'E', '0']

 

posted @ 2019-07-21 13:58  Ling_07  阅读(182)  评论(0编辑  收藏  举报