python 高阶函数

#1.高阶函数
#把函数作为参数传入,这样的函数就叫做高阶函数。
# 高阶函数是函数式编程的体现,函数式编程就是指这种高度抽象的编程范式
# 作用 : 化简代码,增加代码灵活性

def sum_num(a, b, f):
    return f(a) + f(b)
#第三个参数传入abs()函数
print(sum_num(-1, 5, abs))    #输出 6
#第三个参数传入round()函数
print(sum_num(1.1, 2.9, round)) #输出 4
# 2. 内置高阶函数
# 2.1 map()
# map(function, iterable),将传入的函数变量func作用到lst变量的每个元素中
# 并将结果组成新的列表(python2)/迭代器(python3)返回
# function -- 函数
# iterable -- 一个或多个序列

def square(x):
    return x ** 2
list2 = map(square, [1, 2, 3, 4])
print(list2)         #返回迭代器,输出 <map object at 0x0000013BE63933D0>
print(list(list2))   #输出 [1, 4, 9, 16]

list3 = map(lambda x : x ** 2, [1, 2, 3, 4])
print(list3)         #输出 <map object at 0x0000013BE63B8F70>
print(list(list3))   #输出 [1, 4, 9, 16]

#提供两个列表,对相同位置的列表数据进行相加
list4 = map(lambda x, y : x + y, [1, 2, 3, 4], [5, 6, 7, 8])
print(list4)         #输出 <map object at 0x0000013BE64334F0>
print(list(list4))   #输出 [6, 8, 10, 12]

#2.2 reduce()函数
#reduce(func, lst), 其中func函数必须要有两个参数
#每次 func 计算的结果继续和序列的下一个元素做累积计算
import functools
l1 = functools.reduce(lambda x, y : x + y, [1, 2, 3, 4, 5, 6, 7, 8])
print(l1)  #输出 36

#2.3 filter()函数
#filter(func, lst)函数用于过滤序列,过滤掉不符合条件的元素
# 返回一个filter对象,如果要转换为列表,可以用list()转换
# 将序列中的奇数过滤出来
l2 = filter(lambda x : x % 2 == 1, range(1, 10))
print(l2)       #输出 <filter object at 0x000001FD698146A0>
print(list(l2)) #输出 [1, 3, 5, 7, 9]
# 将序列中平方根是整数的数过滤出来
import math
l3 = filter(lambda x : math.sqrt(x) % 1 == 0, range(1, 101))
print(l3)       #输出 <filter object at 0x000001FD698146D0>
print(list(l3)) #输出 [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

 

发布了59 篇原创文章 · 获赞 15 · 访问量 1万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章