python之 高阶函数

高阶函数

概念 : 能够把函数当成参数传递的就是高阶函数
map

语法 :  map(func,Iterable)
功能:   处理数据
		 把Iterable中的数据一个一个拿出来,扔到func函数中做处理
		 把处理之后的结果放到迭代器当中,最后返回迭代器
参数:    func : 自定义函数 或 内置函数
		  Iterable : 可迭代性数据(容器类型数据 range对象 迭代器)
返回值:   迭代器

(1) lst= [“1”,“2”,“3”,“4”] => [1,2,3,4]

lst =  ["1","2","3","4"]
# 常规写法
lst_new=[]
for i in lst:
	lst_new.append(int(i))
print(lst_new)
# map 改写
it = iter(int,lst)
# 获取迭代器中的数据
1.next
res= next(it)
print(res)
2.for 
for i in it:
	print(i)
3.for + next
for i in range(4):
	res= next(it)
	print(res)
4. list 强转
print(list(it))

(2) [1,2,3,4] =>[2,8,24,64]

lst = [1,2,3,4]
# 常规写法
lst_new= []
for i in lst:
	res = i <<i
	lst_new.append(res)
print(lst_new)
#map改写  (参数和返回值一定要写)
def func(n):
	return n<<n
lst = [1,2,3,4]
it = map(func,lst)
print(list(it))
# lambda + map 改写
it = map(lambda n: n<<n ,lst)
print(list(it))

(3){97:“a”,98:“b”,99:“c”} =>[97,98,99]

dict= {97:"a",98:"b",99:"c"}
# 常规写法
dic={"a":97,"b":98,"c":99}
def func(lst):
	lst_new =[]
	for i in lst:
		res = dic[i]
		lst_new.append(res)
	return lst_new
res= func(lst=["a","b","c"]
print(res)

(2)将键值对反转
dic= {97:"a",98:"b",99:"c"}
dic_new = {}
for k,v in dic.items():
	dic_new[v]=k
print(dic_new)
lst = ["a","b","c"]
lst_new=[]
for i in lst:
	res= dic_new[i]
	lst_new.append(res)
print(lst_new)
# map 改写
def func(n):
	dic = {97:"a",98:"b",99:"c"}
	dic_new={}
	for k,v in dic.items():
		dic_new[v]=k
	print(dic_new)
	return dic_new[n]
lst = ["a","b","c"]
it = map(func,lst)
print(list(it))

filter

语法 : filter(func,iterable)
功能 : 过滤数据
		  return True  当前这个数据保留
		  return False 当前这个数据舍弃
参数:  func : 自定义函数
	   iterable : 可迭代型数据(容器类型数据,range对象,迭代器)
返回值:  迭代器

(1)lst = [1,2,3,4,5,6,7,8,9,10]=>[2,4,6,8,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改写
def func(i):
	if i % 2==0:
		return True
	else:
		return False
it = filter(func,lst)
#获取数据
1.next 调用
res= next(it)
print(res)
2.for 
for i in it:
print(i)
3.for + next
for i in range(3):
	res= next(it)
	print(res)
4.list 
print(list(it))
# filter + lambda 改写
it = filter(lambda i : True if i % 2 ==0 else False , lst)
print(list(it))

reduce

语法 : reduce(func,iterable)
功能 : 计算数据
		先把iterable中的前两个值拿出来,扔到func当中做运算,
		把计算的结果和iterable中的第三个元素在扔到func当中做运算,
		再把结果算出来,和第四个元素做运算,以此类推
		直到所有结果运算完毕.返回该结果
参数:  func : 自定义函数
	   iterable : 可迭代型数据(容器类型数据,range对象,迭代器)
返回值 : 计算之后的结果

(1) lst=[5,4,8,8] => 整型5488

form  functools  import  reduce
# 常规写法
# 方法一
lst = [5,4,8,8]
strvar = ""
for i in lst:
	strvar +=str(i)
print(int(strvar))
# 方法二
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 改写**
def func(x,y):
	return x*10+y
lst= [5,4,8,8]
res= reduce(func,lst)
print(res)

# reduce  + lambda 改写
res= reduce(lambda x,y : x*10 +y , lst)
print(res)

(2) “789” =>数字7,8,9

def func1(x,y):
	return x*10 + y
def func2(n):
	dic = {"7":7,"8":8,"9":9}
	return dic[n]
it = map(func2,"789")
res= reduce(func1,it)
print(res)

sorted

语法 : sorted(iterable,key=函数,reverse=False)
功能 :  排序
参数:   iterable:可迭代型数据(容器类型数据,range对象,迭代器)
		key    : 指定自定义函数或内置函数
		reverse : 代表升序或者降序 , 默认是升序(从小到大排序) reverse=False
返回值 :  排序后的结果

(1) 默认从小到大排序
lst= [1,2,-23,3,100]
print(sorted(lst))
(2) recerse = True 从大到小排序
res= sorted(lst,reverse = True)
print(res)
(3) 按照绝对值排序 abs
res =sorted(lst,key = abs)
print(res)
(4)自定义函数进行排序
def func(n):
return n % 10
lst = sorted(lst,key=func)
print(lst)

sorted 和 sort 的区别
sorted 可以排序一切容器类型数据,sort只能排序列表
sorted 返回的是新列表,sort是基于原有的列表进行修改

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值