Python学习-lambda表达式

lambda只是一个表达式,函数体比def简单很多。lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。lambda表达式是起到一个函数速写的作用。允许在代码内嵌入一个函数的定义。

#求三个数的和1 f = lambda x,y,z:x+y+x
2 print(f(1,2,3))    #4
3
4 f = lambda x,y,z:x+y+z
5 print(f(1,2,3))    #6

在常规的def函数构造中,可以有任意数量的语句,并且在def函数定义中,首先需要给函数一个名称,对于lambda表达式而言,lambda是一个匿名函数,不需要给lambda构造提供任何名称。

lambda的构造更多的是为了方便,当你需要构造一个lambda函数时,请记住以下几点:

1、lambda是一个表达式,而不是一个语句,它不支持表达式块。

2、lambda在我们需要的地方进行定义,它不需要命名。

3、lambda不需要返回语句

具有单一参数的Lambda的构造

1 #具有单一参数的lambda结构构造
2 x = [23,34,55]
3 func = lambda x:max(x)
4 print(func(x))   #55

具有多个参数的Lambda构造:

1 #具有多个参数的lambda构造
2 price,volume = 60,20
3 func = lambda price,volume:price/volume
4 print(func(price,volume))   #3.0

具有逻辑运算符的Lambda构造

1 #具有逻辑运算符的Lambda构造
2 signal = ‘SELL‘
3 func = lambda x:x>50 and signal == ‘BUY‘
4 print(func(65))    #False

带有条件表达式的Lambda构造

1 #带有条件表达式的Lambda构造
2 func = lambda x:‘BUY‘ if x > 45 else ‘SELL‘
3 print(func(56))     #BUY

构建带有多个if...else语句的Lambda表达式

1 #带有多个条件语句的lambda表达式
2 func = lambda x:‘BUY‘ if x <= 30 else ‘SELL‘ if x >= 70 else ‘None‘
3 print(func(78))    #SELL

将Lambda表达式与Map、Filter和Reduce功能一起使用

Lambda通常与map()、filter()和reduce()等函数结合在一起使用

1 #lambda与map()映射函数一起使用
2 seq = [1,2,3,4,5]
3 func = map(lambda x:x**2,seq)
4 print(list(func))    #[1, 4, 9, 16, 25]
1 #lambda与filter()滤波函数一起使用
2 Signals = [‘Buy‘,‘Sell‘,None,‘Sell‘,‘Sell‘,‘Sell‘]
3 func = filter(lambda x:x == ‘Buy‘ or x == ‘Sell‘,Signals)
4 print(list(func))   #[‘Buy‘, ‘Sell‘, ‘Sell‘, ‘Sell‘, ‘Sell‘]
1 #lambda与reduce()函数一起使用
2 #在python 3中,reduce()函数已经被从全局名字空间里移除了,它现在被放置在 fucntools 模块里
3 # 如果想要使用它,则需要通过引入 functools 模块来调用 reduce() 函数:
4 from functools import reduce
5 print(reduce((lambda x,y:x + y),[2,1.35,-2.4,3]))   #3.95

参考:

1、https://www.quantinsti.com/blog/popular-python-learning-the-lambda-function/

2、https://blog.csdn.net/imzoer/article/details/8667176

原文地址:https://www.cnblogs.com/yangshijia/p/9035093.html

时间: 2024-09-29 00:03:30

Python学习-lambda表达式的相关文章

#Python中lambda表达式学习

#出处:http://mp.weixin.qq.com/s?__biz=MjM5NzU0MzU0Nw==&mid=202117122&idx=1&sn=1cf1f3f8abce89850da0da685ba4e771#rd#lambda的主体是一个表达式,而不是一个代码块.仅仅能在lambda表达式中封装有限的逻辑进去.#lambda表达式是起到一个函数速写的作用.允许在代码内嵌入一个函数的定义.#例如:f=lambda x,y,z:x+y+zprint f(1,2,3)#用lam

Python之lambda表达式和内置函数

lambda表达式其实就是简化的函数表达式. 它只用于处理简单逻辑, 它会自动return数据 通常定义一个函数,按照以下形式: def  func(arg):       return arg +1 result = func(100) print result 101 以上函数用lambda表达式可以这么写: func2 = lambda a: a+1 result = func2(100) print result 在lambda表达式中,func2 相当于函数表达式中的func,即函数的

Python基础-lambda表达式与三元运算

一.lambda表达式 1 >>> def add(x,y): #定义一个加法函数 2 return x+y #返回两个参数的相加的值 3 4 >>> z=f(3,4) 5 >>> print(z) 6 7 #调用加法函数返回7 7 >>> lambda x,y:x+y 8 <function <lambda> at 0x0000020F385B86A8> 9 #可以看到lambda是一个 function(函

Python的lambda表达式

使用lambda来创建匿名函数,而用def创建的方法是有名称的,除了从表面上的方法名不一样外,python lambda还有哪些和def不一样呢? 1 python lambda会创建一个函数对象,但不会把这个函数对象赋给一个标识符,而def则会把函数对象赋值给一个变量.2 python lambda它只是一个表达式,而def则是一个语句. 如果你在python 列表解析里用到python lambda,我感觉意义不是很大,因为python lambda它会创建一个函数对象,但马上又给丢弃了,因

python 中lambda表达式

一.lambda函数 1.lambda函数基础: lambda函数也叫匿名函数,即,函数没有具体的名称,而用def创建的方法是有名称的.如下: [python] view plain copy """命名的foo函数""" def foo():return 'beginman' #Python中单行参数可以和标题写在一行 """lambda关键字创建匿名函数,该表达式同以上函数""" l

python中lambda表达式应用

对于简单的函数,也存在一种简便的表示方式,即:lambda表达式 #普通函数1 def func(a): 2 return a+1 3 print 'test1_func0:',func(1000)4#lambda表达式 5 func0 = lambda a:a+1 6 print 'test2_func0:',func0(1000) 上面这种方法,都实现了将1000+1的结果打印出来这个功能,但是用下面 lambda存在意义就是对简单函数的简洁表示. 说道lambda,这里再赠送一些可以给la

Python:lambda表达式实现求两个变量的最大值

lambda 表达式(又称匿名函数) 作用: 创建一个匿名函数对象 同def 类似,但不提供函数名 格式: lambda [参数1,参数2,.....]: 表达式(默认只能写一个) 说明: 1.lambda 只是一个表达式,它用来创建一个函数对象 2.当lambda表达式调用时,先执行冒号(:)后的表达式,并返回表达式的结果的引用关系 3.lambda 表达式创建的函数只能包含一条表达式 4.lambda 比函数简单且可以随时创建和销毁,有利于减少程序的偶合度 #方法1 def mymax(x,

Python 的lambda表达式的一些小细节

温故而知新,无意中发现以前实验lambda的时候写的测试代码,第一个反映就是,这是我写的????!!! 呵呵,想想XX语言刚把lambda正式加进去,python早早支持了,我可以大喊一声”Python是最好的语言“来找找骂吗? 哈哈. 不过,自从有了lambda,很多代码一行搞定.不过还是有很多不为一般人注意的小细节,详见下面代码: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 3

[python 学习] lambda

#!/usr/bin/python # -*- encoding:utf-8 -*- # lambda parameter_list: expression f = lambda x,y: x + y print f(1,2) # 3 #等同与下面的函数定义 def g(x, y): return x + y