python中的Lambda表达式/函数

说明:

在python中,有一个名为Lambda的函数。Lambda函数是一个匿名函数-表示该函数没有任何名称。

当我们声明一个函数时,我们使用“ def”关键字来定义一个具有合适函数名的函数。但是lambda函数不需要。

声明lambda表达式/函数的语法:

    lambda parameterlist : expression

哪里,

  • lambda是定义lambda表达式的保留字。

  • parameterlist是一个逗号分隔的参数列表,您可以在函数定义中找到(但请注意缺少括号)。

  • expression是单个Python表达式。该表达式不能是完整的语句。

注意:

  • 此函数可以根据需要使用任意数量的参数,但表达式必须为单个。

  • 您可以随时随地使用lambda函数。

示例1:详细说明简单函数和Lambda函数之间的区别。

# 我们用来定义矩形区域的简单方法:
# 演示矩形的Python代码   
# 显示def()和lambda()之间的差异。 
def area(l,b): 
    return l*b; 
  
g = lambda l,b: l*b 
print('lambda function:',g(7,4)) 
  
#调用函数
print('Via Simple function:',area(7,4))

输出结果

lambda function: 28
Via Simple function: 28

代码说明:

在这里,两个函数都返回矩形的相同区域,但是在使用def关键字时,我们需要完成函数的所有功能并返回它。但是,与lambda相同,我们只需要提供参数和相应的表达式即可返回答案。由于它不包含任何return语句。我们还可以将lambda定义放在需要函数的任何地方,而我们根本不必将其分配给变量。这就是lambda函数的简单

例2:如何使用lambda函数使用不同的形式?

print('Ways to use and declare lambda functions:')
# 简单地定义lambda函数 
#示例-1
g=lambda x, y: 3*x + y
print('Ex-1:',g(10,2))

#示例-2
f=lambda x, y: print('Ex-2:',x, y)
f(10,2)

#示例-3
h=lambda x, y: 10 if x == y else 2
print('Ex-3:',h(5,5))

#示例-4
i=lambda x, y: 10 if x == y else 2
print('Ex-4:',i(5,3))

输出结果

Ways to use and declare lambda functions:
Ex-1: 32
Ex-2: 10 2
Ex-3: 10
Ex-4: 2

lambda函数有filter(),map(),reduce()

lambda()功能可以用类似于其它功能一起使用filter(),map()等等

filter():需要参数列表。该函数过滤掉给定列表中所有返回该函数True的元素。

map(): map() python中的函数,用于通过函数或lambda函数映射列表的所有元素及其条件。

语法:

    map(function_object, iterable1, iterable2,...)

实施例3:使用lambda函数的filter(),map(),reduce()

#使用filter(),带有lambda()函数的map()。


# Python代码说明 
# filter()与lambda() 
li = [5, 7, 22, 97, 54, 62, 77, 23, 73, 61] 
li = list(filter(lambda x: (x%2 == 0) , li)) 
print('By using filter :',li)

# Python代码说明  
# 带lambda()的map()  
# 获得清单的两倍。
l=[{'name':'nhooo', 'star':10},{'name':'yash', 'star':8},{'name':'sanjeev', 'star':8}]
for output1  in (map(lambda x : x['name'],l)):
    print('maping name:',output1)
for output2 in (map(lambda x : x['star']*10,l)):
    print('maping star:',output2)

输出结果

By using filter : [22, 54, 62]
maping name: nhooo
maping name: yash
maping name: sanjeev
maping star: 100
maping star: 80
maping star: 80