【Python】lambda表达式(自定义函数)

目录

lambda表达式 

1. lambda表达式的创建及其特点

2. lambda函数的用法 


lambda表达式 

  在Python中,lambda表达式也称匿名函数,它本身是一个函数,却没有名称。初学者一般会感到茫然,这个lambda函数有什么用呢?下面介绍一个简单的例子。

def getSqure(x):              #先定义一个函数getSqure(x),返回x的二次方
    return x*x

map(getSqure,[x for x in range(10)])    #将定义好的函数getSqure传给map函数

若用lambda函数来实现上述功能,只需要一行代码: 

map(lambda x:x*x,[y for y in range(10)])

  使用lambda函数的优点主要表现在:可以减少代码量,使程序更加简洁:其次,使用lambda函数,不用考虑函数的命名,可以快速实现某项功能。

  值得注意的是,这会在一定程度上降低代码的可读性。 

1. lambda表达式的创建及其特点

  lambda表达式的创建语法形式如下:

           lambda argument_list:expression

其中,argument_list为参数列表;expression为表达式,表达式中出现的参数需要在argument_list中有定义,并且表达式只能是单行的。 

  lambda表达式有3个特点:

(1)lambda函数是没有函数名的、临时使用的小函数,适合需要一个函数作为另一个函数参数的场合。 

(2)lambda函数有输入和输出。输入是传入到参数列表argument的值,输出是根据表达式expression计算得到的值。

(3)lambda表达式只能含一个表达式,不允许包含复合语句,不用写return ,返回值就是该表达式(expression)的结果,但在表达式中可以调用其他函数。

2. lambda函数的用法 

  根据lambda函数应用场景的不同,可以将lambda函数的用法归纳下面几种:

(1)将lambda函数赋值给一个变量,通过这个变量间接调用该lambda函数。

>>> f=lambda x,y:x+y     #将lambda表达式赋给变量f
>>> f('我学','Python')   #像函数一样调用
'我学Python'

(2)将lambda函数作为其他函数的返回值,返回给调用者。例如 return lambda x,y:x+y返回一个加法函数。

(3)lambda 函数最主要的用法是作为参数传递给其他函数。典型的有: 

① 过滤函数filter(function,iterable)。根据传递的函数参数function,过滤掉迭代对象iterable中不符合条件的元素,返回由符合条件元素组成的filter对象。

② 排序函数sorted(iterable,key,reverse=False)。对迭代对象iterable进行排序,并返回新的iterable对象,其中参数key为排序规则,可用lambda传值,排序方式reverse=False排升序(默认),reverse=True 降序。

③ 遍历函数map(function,iterable)。把一个函数function依次映射到迭代器对象iterable的每个元素上,并返回一个可迭代的map对象,map对象中每个元素是原序列中元素经过函数function处理后的结果。

④ reduce(function,iterable)函数。对参数序列中的元素进行积累。 

>>> sorted([3,4,5,6,7],key=lambda x:abs(5-x))  #按元素与5距离排升序
[5,4,6,3,7]

你可能感兴趣的:(【Python】笔记,python,开发语言)