zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    误操作 rpm -e --nodeps zlib
    Raid阵列之简单介绍
    GpG使用指南
    hadoop系统的端口
    网站日志流量复杂分析
    Flume在企业大数据仓库架构中位置及功能
    Hue的安装与部署
    Hive中的数据倾斜
    Hive的三种Join方式
    如何每日增量加载数据到Hive分区表
  • 原文地址:https://www.cnblogs.com/yangshijia/p/9035093.html
Copyright © 2011-2022 走看看