python内置经常使用高阶函数:
一、函数式编程
函数自身能够赋值给变量,赋值后变量为函数;
许可将函数自身作为参数传入另一个函数;
许可返回一个函数。
1、map()函数
是 Python 内置的高阶函数,它吸收一个函数 f 和一个 list,
并经由过程把函数 f 顺次作用在 list 的每一个元素上,获得一个新的 list 并返回
def add(x): return x+x print(map(add,[1, 2, 3])) # Out:<map object at 0x00000239E833DE48> print(list(map(add,[1, 2, 3]))) # Out:[2, 4, 6]
2、reduce()函数
reduce()函数也是Python内置的一个高阶函数。
reduce()函数吸收的参数和 map()相似,一个函数 f,一个list,但行动和 map()差别,reduce()传入的函数f必需吸收两个参数,
reduce()对list的每一个元素重复挪用函数f,并返回终究效果值。
在 Python3 中,reduce() 函数已被从全局名字空间里移除了,它现在被安排在 functools 模块里,假如想要使用它,
则须要经由过程引入 functools 模块来挪用 reduce() 函数:
from functools import reduce def prod(x, y): return x*y print(reduce(prod, [2, 4, 5, 7, 12])) # Out:3360 # 2*4*5*7*12 # reduce()还能够吸收第3个可选参数,作为盘算的初始值。假如把初始值设为100 print(reduce(prod, [2, 4, 5, 7, 12], 100)) # Out:336000 # 2*4*5*7*12*100
3、filter()函数
是 Python 内置的另一个有效的高阶函数,filter()函数吸收一个函数 f 和一个list,
这个函数f的作用是对每一个元素举行推断,返回 True或 False,filter()依据推断效果自动过滤掉不相符前提的元素,
返回由相符前提元素构成的新list。
import math def is_sqr(x): return math.sqrt(x) == int(math.sqrt(x)) print(list(filter(is_sqr, range(1, 101)))) # Out:[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
4、sorted() 函数
对一切可迭代的对象举行排序操纵。
sort 与 sorted 辨别:
sort 是应用在 list 上的要领,sorted 能够对一切可迭代的对象举行排序操纵。
list 的 sort 要领返回的是对已存在的列表举行操纵,而内建函数 sorted 要领返回的是一个新的 list,而不是在本来的基础上举行的操纵。
sorted(iterable, key=None, reverse=False)
iterable -- 可迭代对象。
key -- 主如果用来举行比较的元素,只要一个参数,细致的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元夙来举行排序。
reverse -- 排序划定规矩,reverse = True 降序 , reverse = False 升序(默许)。
返回从新排序的列表
print(sorted([5, 2, 3, 1, 4])) # Out:[1, 2, 3, 4, 5] print(sorted({1:'D', 2:'B', 3:'B', 4:'E', 5: 'A'})) # Out:[1, 2, 3, 4, 5]
应用key举行倒序排序
example_list = [5, 0, 6, 1, 2, 7, 3, 4] result_list = sorted(example_list, key=lambda x: x*-1) print(result_list)
要举行反向排序,也能够经由过程传入第三个参数 reverse=True:
example_list = [5, 0, 6, 1, 2, 7, 3, 4] print(sorted(example_list, reverse=True)) # Out:[7, 6, 5, 4, 3, 2, 1, 0]
5、Python的函数不只能够返回int、str、list、dict等数据范例,还能够返回函数!
请注意辨别返回函数和返回值:
def my_abs(): return abs # 返回函数,返回函数能够把一些盘算耽误 def my_abs2(x): return abs(x) # 返回函数挪用的效果,返回值是一个数值
def calc_prod(lst): def lazy_prod(): prod = 1 for i in lst: prod = prod*i return prod return lazy_prod f = calc_prod([1, 2, 3, 4]) print(f()) # Out:24
5.1、为何定义lazy_prod()函数和返回函数cal_prod()?
python支撑返回函数的基础语法
def f(): print('call f()...') # 定义函数g: def g(): print('call g()...') # 返回函数g: return g
只返回函数的作用:
返回函数能够把一些盘算耽误实行。比方,假如定义一个一般的乞降函数:
def calc_sum(lst): return sum(lst) print(calc_sum([1,2,3,4])) # Out:10 def calc_sum(lst): def lazy_sum(): return sum(lst) return lazy_sum f = calc_sum([1, 2, 3, 4]) print(f) # 代码并没有对函数举行实行盘算出效果,而是返回函数,所以打印出来的是范例 #Out: <function calc_sum.<locals>.lazy_sum at 0x000001FF43462E18> print(f()) # 对返回的函数举行挪用时,才盘算出效果 # Out:10
以上就是python中5个经常使用的内置高阶函数的引见(附代码)的细致内容,更多请关注ki4网别的相干文章!