Python中的Lambda表达式小析


Lambda表达式在Python中经常使用到,在此总结下Lambda表达式的常用方法。

 

首先,要明白Lambda表达在Python中是作为一个匿名函数的构造器而存在。其次,要明白Lambda表达式的常用场景是Lambda表达式对应函数的使用次数非常有限(因此,没有必要专门定义一个非匿名函数),同时保证了代码的简洁性。

 

最简单的一个Lambda表达式例子和对应的非匿名函数:

 

f = lambda x: x + 1
print ( f(1) )

def h (x):
	return x + 1
print ( h(1) )


 

带有一个参数的Lambda表达式和对应的非匿名函数:

 

def f(n):
	return lambda x: x / n
print ( f(1)(2) ) 	# n=1; x=2

def g(n):
	return lambda x: x / n
k = g(1)			# n=1
print ( (k(2)) )	# x=2

def h(x,n):
	return x / n
print ( h(2,1) )	#x=2; n=1


 

Lambda匿名函数经常被用到filter(), map(), reduce(), sorted()函数中,这些函数的共同点是均需要函数型的参数,Lambda表达式正好适用。以sorted函数为例,其key参数指定了一个负责从带排序的list中抽取comparison key的函数。

 

club_ranking = [
    ('Arsenal', 3),
    ('Chelsea', 1),
	('Manchester City', 2),
    ('Manchester United', 4),
]
club_sorted = sorted(club_ranking, key = lambda x: x[1])   # sort by ranking
print (club_sorted)

'''
在Python3.4中需要使用functools将cmp函数转化为key函数
'''
import functools
club_ranking = [
    ('Arsenal', 3),
    ('Chelsea', 1),
	('Manchester City', 2),
    ('Manchester United', 4),
]
def get_ranking( x, y ): #define cmp function
	return x[1] - y[1]
club_sorted = sorted(club_ranking, key = functools.cmp_to_key(get_ranking))   # sort by ranking
print (club_sorted)


 

 

 

 

 

 

评论关闭