lambda在python中的应用_Python 中的 lambda 表达式及其简单应用

1. lambda 表达式基本用法在Python中,lambda表达式用来创建匿名函数,使用后得到一个函数对象( function object )。其基本使用形式是:

lambda x : op(x)

即,lambda标识符后跟出由冒号分割开的函数体,冒号左侧是函数的变量,冒号右侧是函数的具体功能。lambda表达式返回对应变量的函数值。如:

>>> func = lambda x, y : x + y

定义了一个两变量之和的函数。而使用该函数只需要根据冒号左侧的参数要求传入参数即可:

>>> func(1,2)

>>> 3

lambda表达式可以用在 Python 语言中任意需要用到函数的地方。

可以看到 lambda 表达式可以快速定义一些简单函数。相比于 def 定义,lambda更轻便。一般地,用 lambda 表达式定义一些功能简答,且不会重复使用的函数;用 def 定义功能复杂且重用性强的函数。

2. lambda 表达式常见搭配使用由于 lambda 定义形式简洁,常常和一些需要使用函数对象的功能函数搭配使用。如 reduce / filter / map / sorted。这些函数具有大致相同的调用格式:

reduce(function, iterable)

filter(function, iterable)

map(function, iterable)

sorted(iterable, cmp[key])

下面将详细介绍这些函数的基本使用以及在函数中使用 lambda 表达式。

reduce(function, iterable)

reduce函数在Python 3中已经被移出了全局函数,可以从functools模块中导入。

reduce 会对数据集合(iterable)中的元素累积用function进行处理。注意function的参数必须为2个。

>>> from functools import reduce

>>> def mul(x, y):

return x*y

>>> reduce(mul, [1, 2, 3, 4]) # 1*2*3*4

>>> 24

如果使用lambda表达式,则可以省略对mul函数的定义,直接写作:

>>> reduce(lambda x,y : x*y , [1,2,3,4])

>>>24

filter(function, iterable)

filter 函数对数据集合中的元素逐个进行判断:将元素作为参数传入function。若function返回值为True,则保留该元素;反之,则不保留。

>>> def is_odd(x):

return x % 2 == 1

>>> res = filter(is_odd, [1,2,3,4,5]) # 保留列表中的奇数元素

>>> print(list(res)) # 在Python 3中filter函数默认返回的是一个iterator对象,需要转化才能打印。

>>> [1,3,5]

# 使用 lambda 表达式

>>> filter(lambda x : x%2==1 , [1,2,3,4,5])

>>> print(list(res))

>>> [1,3,5]

map(function, iterable)

map函数会为数据集合中的元素逐个调用function,并将函数返回值按顺序组合成新的数据集合。根据function的参数个数,数据集合可以有多个。

# 函数参数只有1个

>>> def square(x):

return x**2

>>> res = map(square, [1,2,3,4])

>>> print(list(res))

>>> [1,4,9,16]

# 使用lambda表达式

>>> res = map(lambda x:x**2, [1,2,3,4])

>>> print(list(res))

>>> [1,4,9,16]

# 函数参数有多个

>>> res = map(lambda x,y : x+y, [1,2,3,4], [5,6,7,8])

>>> print(list(res))

>>> [6,8,10,12]

sorted(iterable, key, reverse)

sorted 函数是一个排序函数,能够根据key指定的关键字对复杂的数据元素进行排序,如对一个以元组为元素的列表进行排序。sorted默认返回升序排列,reverse=True时返回降序排列。

# 简单的列表排序

>>> l = [1,7,5,6,2]

>>> L = sorted(l)

>>> print(L)

>>> [1,2,5,6,7]

#复杂情形,指定排序依据

>>> insts = [('Judy', 15),('Bob', 17),('Cate',16)]

>>> Insts = sorted(insts, key = lambda x:x[1]) # 按每个元素的第2个子元素排序

>>> print(Insts)

>>> [('Judy', 15),('Cate',16),('Bob', 17)]

3. 总结本文中介绍了Python 中lambda表达式定义匿名函数的方法,以及reduce / filter / map / sorted 四个函数的基本用法,可以看到,如果能够熟练合理地将lambda表达式和这些函数结合应用,可以大大提高编程效率和代码整洁度。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值