Python学习笔记 17

高阶函数和匿名函数

  1. 高阶函数定义
  2. 匿名函数:lambda
  3. 高阶函数:filter( ) 函数和 map( ) 函数
  4. 高阶函数:sort( )sorted( ) 的key条件排序
# 高阶函数
# 接收函数作为参数,或者将函数作为返回值的函数
# 当我们使用函数作为参数时,实际上是将指定代码传递进了目标函数

l = [1,2,3,4,5,6,7,8,9,10]

def fn1(n) :
	if n%2==0 :
		return True
	return False

def fn2(n) :
	if n>5 :
		return True
	return False

def fn3(n) :
	if n<7 :
		return True
	return False

def fn( a:list,func ) ->list :
	'''
	将列表中的偶数获取出来,返回到一个新列表中

	参数:
			a : 要筛选的列表
	'''
	b=[ ]
	for i in a :
		if func(i) :
			b.append( i )
	return b

print( fn( l,fn1 ) )
print( fn( l,fn2 ) )
print( fn( l,fn3 ) )


# filter( ) 过滤函数
# 从序列中过滤出符合条件的元素,保存到一个新序列中
# 参数:
# 	 1. 一个函数(lambda,def...),根据该函数条件来进行过滤(可迭代结构)
# 	 2. 需要过滤的函数(list...)(可迭代函数)
# 返回值:
#   过滤后的新序列(可迭代函数):<filter object at 0x01A8E870>
print( filter(fn1,l) )
print( list(filter(fn1,l)) )

# 匿名函数 lambda 函数表达式(语法糖)
# 	该函数是用来创建一些简单的函数,一般作为参数使用
# 	语法:
# 		lambda 参数列表 : 返回值(返回值不用加return,直接写)

lambda a,b :  a+b
# 不常用的用法:
# 调用时 (lambda a,b :  a+b)(10,20)
# 赋值给变量 fn5 = lambda a,b :  a+b

print( list( filter( lambda n :  n>5 ,l ) ) )
# lambda 在使用完就会释放内存

# map( ) 
# 对可迭代对象中的所有元素做指定操作,添加到新的序列中并返回
# 参数:
# 	 1. 一个函数(lambda,def...),根据该函数条件来进行指定操作(可迭代结构)
# 	 2. 需要做操作的的函数(list...)(可迭代函数)
# 返回值:
#   操作后的新序列(可迭代函数):<map object at 0x0152E890>
l = [1,2,3,4,5,6,7,8,9,10]

r = map( lambda i : i*3 , l )
print( list(r) )

# sort( )
# 对列表进行排序,默认直接比较元素的大小
# 在sort( )可以接收一个关键字参数,key
#     key需要一个函数作为参数,当设置了函数作为参数
# 	   每次都会以列表中的一个元素作为参数调用函数,并使用函数的返回值来比较元素的大小

li = ['sssss','gffg','ii','ttt']
li.sort( key = len )
print(li)

li = [4,6,2,'1',3,'5']
li.sort( key = int )
print(li)

# sorted( )
# 用法和sort( )基本一致,但sorted可以对任意序列进行排序
#      使用sorted( )不会影响原来的对象,而是返回一个新的对象

d = {'4':2,'6':7,5:8}
print( sorted(d,key = int) )

t = ('dfgsa','tr','arr')
print( sorted(t,key = len) )

猜你喜欢

转载自blog.csdn.net/weixin_44011689/article/details/89455397
今日推荐