高阶函数
可以把函数作为参数传递的函数叫高阶函数
sorted,reduce,filter,map
#高阶函数:能够把函数当成参数传递的就是高阶函数 (sorted map reduce filter )
sorted(iterable,reverse=False,key=函数)
功能: 排序
运行原理:把可迭代数据里面的数据,一个一个拿到函数里面进行处理,按照return的结果进行排序,得到一个新的列表
参数:
iterable:可迭代数据(容器类型数据,range对象,迭代器)
reverse(可选) :是否反转 默认False 不反转 , True 反转
key(可选) :函数 自定义 或 内置函数
返回值:排序后的结果(新的列表)
map(func,iterable)
map() 函数是python内置的高阶函数,对传入的可迭代对象里的每一个元素进行处理,返回一个新的处理之后的迭代器
功能: 把可迭代数据里面的数据,一个一个拿到函数里面进行处理,得到一个迭代器并返回。
参数: func 函数
iterable 可迭代的数据(容器类型数据,range对象,迭代器)
返回值: 迭代器
reduce(func,iterable)
reduce() 函数在 python 2 是内置函数, 从python 3 开始移到了 functools 模块。 使用方法:from functools import reduce
功能:
一次性从iterable拿出两个值,扔到func里面做运算,得出一个计算结果
然后,把这个计算结果和iterable里面的第三个数据,继续扔到func里面做运算,以此类推
即:不停地从iterable里面拿数据,直到运算结束为止
参数:
func : 内置函数 或 自定义函数
iterable:可迭代的数据 (容器类型数据,range对象,迭代器)
返回值: 最终的结果
filter(func, iterable)
功能: 过滤数据 (return True 保留数据,return False 舍去数据)
接收两个参数,第一个为函数,第二个为可迭代对象,可迭代对象的每个元素作为参数传递给函数进行判断,
然后返回 True 或 False,最后将返回 True 的元素放到迭代器中。
参数:
func : 判断函数
iterable: 可迭代的数据(容器类型数据,range对象,迭代器)
返回值:
迭代器
list1
= (3,2,4,6,1)
res
= sorted(list1
,reverse
= True)
print(res
)
list1
= (3,2,4,6,1,7)
res
= sorted(list1
,reverse
= True,key
=lambda x
:x
% 2)
print(res
)
def func(num
):
return num
% 2
list1
= [3,2,4,6,1,7,9,5]
res
= sorted(list1
,key
=func
)
print(res
)
def ji(num
):
return num
** num
tuple1
= (3,2,4,1)
res
= map(ji
,tuple1
)
print(list(res
))
from functools
import reduce
def func(m
,n
):
return m
* n
res
= reduce(func
,range(1,6))
print(res
)
def func(num
):
return num
% 3
list1
= [1,2,3,4,5]
res
= filter(func
,list1
)
print(list(res
))