如何在 Python 中使用lambda与if-else 条件

924 阅读3分钟

在这篇文章中,我们将学习如何在 Python 中使用lambdaif-else 条件。当你需要更高级的匿名函数时,将这两者搭配起来会非常有用。

任何编程语言中的条件语句都是需要学习的基本概念之一。它们的主要用途是根据所提供的条件行事。每个程序员都必须学习这些,然后再继续学习高级主题。在几乎所有的语言中,只有三个条件语句:

  1. 如果
  2. 否则
  3. else if

什么是 Python 中的 lambda 函数?

Python 中的 lambda 函数是一个匿名函数。使用这个概念的核心目的是它使函数的创建变得简单。

兰姆达函数的语法

variable = lambda parameters_list : expression

Lambda 语法

为了获得更多的信息,输入以下命令。

help('lambda')

我们得到以下输出

Lambdas
*******

   lambda_expr        ::= "lambda" [parameter_list] ":" expression
   lambda_expr_nocond ::= "lambda" [parameter_list] ":" expression_nocond

Lambda expressions (sometimes called lambda forms) are used to create
anonymous functions. The expression "lambda parameters: expression"
yields a function object.  The unnamed object behaves like a function
object defined with:

   def <lambda>(parameters):
       return expression

Note that functions created with lambda expressions cannot contain
statements or annotations.

使用lambdas,我们可以进行以下操作,以方便初学者:

  1. 加法
  2. 减法
  3. 乘法
  4. 除法

其他高级操作包括:

  1. 在函数式编程中使用。
  2. 在面向对象的编程中使用。
  3. 对一个特定类的方法进行参数化。

让我们看一下λ函数的几个例子

加法

代码

add = lambda a, b: a + b
print(add(5, 5))

# output: 10

这段代码很简单。我们首先创建一个lambda对象作为add。然后我们在lambda表达式里面存储两个参数。这些参数是两个数字,用于加法运算。之后在冒号里,我们把加法表达式放在冒号前面。

子操作

代码

subtract = lambda a, b: a - b
print(add(100, 50))

# output: 50

乘法

代码

multiply = lambda a, b: a * b
print(multiply(100, 50))

# output: 5000

使用带有if-else条件的Lambda

使用带有if-else条件的lambda是一种有用的技术。这也减少了代码的行数。现在,请注意,lambdas中的表达式部分一次只能容纳一个表达式。

在Python中使用带有if-else条件的lambda的一般语法

variable_name = lambda parameters : code_for_if if (condition) else code_for_else

语法与lambda的核心实现有一点不同。所以,只需在if 语句前声明代码,然后写上带有条件的if语句。如果需要,else块直接在if语句之后。

Lambda If Else Block

conditional_lambda = lambda x: x/100 if x < 20 else x
print(conditional_lambda(4))

# output: 0.04

解释

  1. 我们创建一个lambda对象作为conditional_lambda
  2. 然后,我们存储一个变量x 和表达式x/100,与之结合的是我们的条件语句。
  3. 该语句说,如果x小于20就除以100,否则按原样打印。
  4. 然后我们调用conditional_lambda函数,并在其中放置参数4。
  5. 由于4小于20,它将被除以100,在屏幕上的输出为0.04。

现在我们将研究如何利用这个函数进行其他高级运算。

例子-使用lambdas检查给定的数字是偶数还是奇数

# setup lambda 
check = lambda num : print(num, 'is Even') if num%2 == 0 else print(num, ' is Odd')

# input from user
num = int(input('Enter any number: '))
a = check(num)
print(a)

输出

>>> Enter any number: 65
65 is Odd 

>>> Enter any number: -56
-56 is Even

例子使用lambdas检查给定的数字是偶数还是奇数

check = lambda a, b : print(a,'is divisible by', b) if (a%b == 0) else print(a ,' is indivisible by ', b)
a = int(input('Enter value for a: '))
b = int(input('Enter value for b: '))
obj = check(a, b)

输出

>>> Enter value for a: 45
>>> Enter value for b: 45
45 is divisible by 45

>>> Enter value for a: 3
>>> Enter value for b: 9
3 is indivisible by 9

解释

  1. 首先,我们定义lambda的语句。该函数有两个参数ab,函数名是check
  2. 然后在if块之后。主要条件是a应该能被b整除。如果这是真的,该块将打印("a能被b整除")。但如果余数不为零,那么else块就会打印出不可分割。
  3. 然后我们创建一个函数对象作为obj ,并调用它关于check(a, b)

收尾工作

这样,我们就到了这个话题的结尾。使用带有if-else条件的Lambda是保持单行代码可见性的关键话题之一。最重要的是我们不需要改变核心语法,只需要编辑我们的条件和其他东西。读者必须修改代码并多次尝试以理解代码。