在编程中,我们常常会遇到使用if…else的情况,某些语言中在if…else过多的时候我们会使用switch…case来替代if…else以避免代码结构过于冗长。

Python是不支持switch…case语法的,自然无法使用switch…case来替代if…else结构。
但好在强大的Python支持lambda, 本文就是介绍一种用lambda来替代if…else的方法实现。

先看看lambda 函数语法:

lambda [arg1 [, agr2,.....argn]] : expression

例如,我们要将两个字符串拼接并转为大写,可以这样实现:

In [80]: str1="hello"
    ...: str2="world"
    ...: str3="{}{}".format(str1.upper(), str2.upper())
    ...:
In [81]: str3
Out[81]: 'HELLOWORLD'

使用lambda函数可以这样做:

In [83]: cmb_str = lambda s1,s2:"{}{}".format(s1.upper(), s2.upper())
In [84]: str3=cmb_str(str1,str2)
In [85]: str3
Out[85]: 'HELLOWORLD'

了解了lambda的基本用法之后,我们来看看如何通过lambda来替代if…else。
假设我们要实现这样一个test()函数,分别处理val为1、2、3的情况,使用if…else实现如下:

In [86]: def test(val):
    ...:     if val==1:
    ...:         print("case 1")
    ...:     elif val==2:
    ...:         print("case 2")
    ...:     elif val==3:
    ...:         print("case 3")
    ...:
In [87]: test(1)
case 1
In [88]: test(2)
case 2
In [89]: test(3)
case 3

使用lambda可以这样来实现:

In [90]: def case1():
    ...:     print("case 1")
    ...:
In [91]: def case2():
    ...:     print("case 2")
    ...:
In [92]: def case3():
    ...:     print("case 3")
    ...:
In [93]:
In [93]: def testLambda(val):
    ...:     valfunc = {
    ...:     1: lambda:case1(),
    ...:     2: lambda:case2(),
    ...:     3: lambda:case3()}
    ...:     func = valfunc[val]
    ...:     func()
    ...:
In [94]: testLambda(1)
case 1
In [95]: testLambda(2)
case 2
In [96]: testLambda(3)
case 3

这可以在一定程度上使代码更为简洁。

在编程中,我们常常会遇到使用if…else的情况,某些语言中在if…else过多的时候我们会使用switch…case来替代if…else以避免代码结构过于冗长。Python是不支持switch…case语法的,自然无法使用switch…case来替代if…else结构。但好在强大的Python支持lambda, 本文就是介绍一种用lambda来替代if…else的方法实现。先看看lambda 函数语法:lambda [arg1 [, agr2,.....argn]] : expression例
# -*- coding: utf-8 -*-print("*******if...else语句*********") #if 条件为真的时候返回if前面内容,否则返回0 exp1= lambda x:x+1 if 2==1 else 0 print(exp1(2))exp2 = lambda x:x+1 if 1==1 else 0 print(exp2(2))print("*******if
@Test public void testSet(){ Condition.empty().when(false).set("1").orWhenEquals("1").toDo(p -> System.out.println("1")); Condition.of(1).whenEquals(1).toDo(p -> System.out.println("2")).elseDo(System.out::print); Condition.of(1).whenEquals(2).setResult(1).elseWhen(p -> p > 0) .setResult(2).handleResult(result ->
本文实例讲述了Python lambda函数基本用法。分享给大家供大家参考,具体如下: 这里我们简单学习一下python lambda函数。 首先,看一下python lambda函数的语法,如下: f=lambda [parameter1,parameter2,……]:expression lambda语句中,冒号前是参数,可以有0个或多个,用逗号隔开,冒号右边是返回值。lambda语句构建的其实是一个函数对象。 1》无参数 f=lambda :'python lambda!' at 0x06BBFF30> 'python
sourcedf[‘地区’]=sourcedf[‘exam_district’].apply(lambda x:“全国” if x1 else (“北京” if x3 else(“上海” if x==24 else “其他地区”)) ) 原文:https://blog.csdn.net/weixin_40161254/article/details/86231869
python3if语句Are you taking advantage of these features of Python that can help make your code make more sense?您是否正在利用Python的这些功能来帮助使代码更有意义? Code readability is not just about making your code shorter. ...
根据其语法格式可以得到lambda 表达式的两个要点: 1、lambda 表达式必须使用 lambda 关键字定义。 2、在 lambda 关键字之后、冒号左边为参数列表,可不带参数,也可有多个参数。若有多个参数,则参数间用逗号隔开,冒号右边为 lambda 表达式的返回值。 lambda 表达式的本质是匿名的、单行函数体的函数,故lambda 表达式可以写成函数的形式。例如,对于如下 lambda 表达式: lambda x , y : x * y改写为函数形式如下: def add(x, y):
在Stream处理中,我们通常会遇到if/else的判断情况,对于这样的问题我们怎么处理呢? 还记得我们在上一篇文章lambda最佳实践中提到,lambda表达式应该越简洁越好,不要在其中写臃肿的业务逻辑。 接下来我们看一个具体的例子。 假如我们有一个1 to 10的list,我们想要分别挑选出奇数和偶数出来,传统的写法,我们会这样使用: public void inForEach(){ List ints = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
如果你在学校读的是计算机科学专业,那么可能学过 Lambda 表达式, 不过可能从来没有用过它。如果你不是计算机科学专业,它们看着可能 有点儿陌生(或者只是“曾经学习过的东西”)。在这一节里,虽然我们 不打算深入学习这类函数,但是会用几个例子来演示它们是如何用在网 页抓取中的。 Lambda 表达式本质上就是一个函数,可以作为变量传入另一个函数; 也就是说,一个函数不是定义成 f(x, y),而是可以定义成 f(g(x), y) 或 f(g(x), h(y)) 的形式。 BeautifulSoup 允许我们把特定类型的函数作为参数传入 find_all 函 数。唯一的限制条件是这些函数必须把
sourcedf['地区']=sourcedf['exam_district'].apply(lambda x:"全国" if x==1 else ("北京" if x==3 else("上海" if x==24 else "其他地区")) ) lamada(表达式 if 条件 else (表达式 if 条件 else(…………)))... 注意:调用有参数的函数,但没有给其传值,函数一样可以运行,或者调用没有参数的函数,给其传值,该函数 也一样运行。 说的简单点:只要写了函数名后面跟了一对小括号,该函数就会运行。那么传递的参数呢? 其实,在函数中有一个参数数组对象(arguments),该对象将传递的参数都封装在一个数组中。 function demo()/ lambda 参数列表: 返回值1 if 条件 else 返回值2 其中,参数列表是lambda表达式的参数列表,可以包含多个参数,用逗号隔开。返回值1和返回值2是两个可能的返回值,条件是一个布尔表达式,如果条件为True,则返回返回值1,否则返回返回值2。 例如,下面的lambda表达式返回两个数中的最大值: max = lambda a, b: a if a > b else b 当a大于b时,返回a,否则返回b。