高阶函数
1、map
map(func,Iterable)
功能:
把Iterable中的数据一个一个拿出来,扔到func中做处理
把处理后的结果放到迭代器中,最后返回迭代器
参数:
func:自定义函数
Iterable:可迭代性数据(容器类型数据、range对象、迭代器)
返回值:
迭代器
#常规写法
lst = ["1","2","3","4"]
lst_new = []
for i in lst:
lst_new.append(int(i))
print(lst_new)
用map高阶函数改写:
lst = ["1","2","3","4"]
it = map(int,lst)
print(list(it))
运行结果:
代码解析:
先把"1" 扔到int当中做处理,将强转后的结果扔到迭代器中
然后把"2" 扔到int当中做处理,将强转后的结果扔到迭代器中
然后把"3" 扔到int当中做处理,将强转后的结果扔到迭代器中
然后把"4" 扔到int当中做处理,将强转后的结果扔到迭代器中
最终返回迭代器
2、filter(func,iterable)
功能: 过滤数据
return True 当前这个数据保留
return False 当前这个数据舍弃
参数:
func : 自定义函数
iterable : 可迭代型数据(容器类型数据,range对象,迭代器)
返回值:
迭代器
在lst = [1,2,3,4,5,6,7,8,9,10]中筛选出所有偶数,并将筛选出的数字添加到一个新列表。
常规写法:
lst = [1,2,3,4,5,6,7,8,9,10]
lst_new = []
for i in lst:
if i % 2 == 0:
lst_new.append(i)
print(lst_new)
运行结果:
用filter高阶函数进行改写(套用lambda表达式,如不清楚可查看之前函数part3中匿名函数相关写法)
lst = [1,2,3,4,5,6,7,8,9,10]
it = filter(lambda n : n % 2 == 0,lst)
print(list(it))
同样可得到以上结果。
3、reduce(func,iterable)
功能:计算数据
先把iterable中的前两个值拿出来,扔到func当中做运算,
把计算的结果和iterable中的第三个元素在扔到func当中做运算,
再把结果算出来,和第四个元素做运算,以此类推
直到所有结果运算完毕.返回该结果
参数:
func : 自定义函数
iterable : 可迭代型数据(容器类型数据,range对象,迭代器)
返回值:
计算之后的结果
将列表[5,4,8,8]转为整型5488:
常规写法:
lst = [5,4,8,8]
it = iter(lst)
num1 = next(it)
num2 = next(it)
num = num1 * 10 + num2
for i in it:
num = num * 10 + i
print(num)
用reduce高阶函数进行改写:
from functools import reduce
lst = [5,4,8,8]
res=reduce(lambda x,y:x*10+y,lst)
print(res)
运行结果:
4、sorted(iterable,key=函数,reverse=False)
功能:排序
参数:
iterable(容器类型数据,range对象,迭代器)
key 指定 自定义函数或 内置函数
reverse : 代表升序或者降序 , 默认是升序(从小到大排序) reverse=False
返回值:
排序后的结果
lst = [1,2,3,4,5,-90,-4,-1,100]
res = sorted(lst)
print(res)
默认从小到大排序:
运行结果:
reverse进行反转
res = sorted(lst,reverse=True)
print(res)
sort和sorted区别:
(1) sorted可以排序一切容器类型数据, sort只能排列表
(2) sorted返回的是新列表,sort是基于原有的列表进行修改
(3) 推荐使用sorted
————————————————
原文链接:https://blog.csdn.net/qq_39787513/article/details/107501887