Python匿名函数

时间:2020-02-23 14:42:25  来源:igfitidea点击:

Python匿名函数

Python匿名函数是没有名称的函数。
因此,我们可以在较小范围的程序中使用Python匿名函数。
通常,我们使用def关键字定义Python函数。
但是我们使用lambda关键字定义了匿名函数。
匿名函数的基本结构如下。

lambda arguments : expression

仔细观察,匿名函数在接受一个或者多个参数时只有一个表达式。
因此,如果我们要创建一个将计算两个数字之和的函数。
以下代码将这样做;

def sum ( a, b ):
      return a+b

print (sum(1, 2))
print (sum(3, 5))

但是,我们可以将此函数转换为匿名函数。
代码将像这样

sum = lambda a,b: (a+b)

print (sum(1,2))
print (sum(3,5))

为什么要使用Python匿名函数

似乎我们可以用常规函数代替匿名函数。
那么,为什么要使用匿名函数呢?首先,您可能需要在整个范围内重复执行一项任务。
因此,您需要一个临时功能来执行此操作。
有了这种内涵,lambda /匿名函数可以为您提供帮助。
因为,匿名函数在范围之间是有效的,而常规函数在程序中是有效的。

表达或者语句

关于实现匿名函数的主要困惑是,没有区分表达式和语句的能力。
基本上,一条语句不返回任何内容,而表达式产生至少一个值。
简单的数学表达式(例如加法,乘法,除法)是表达式,可以在lambda /匿名函数中使用。
因此,您必须添加一个表达式,以便可以通过lambda/anonymous函数返回表达式的结果。

Lambda /匿名函数的一些用法

现在,我们将看到lambda的一些常用用法。
通过使用map()和filter()函数,我们可以使用匿名函数更改列表。
例如,我们希望将列表中的所有数字增加n。
为此,代码应如下所示

#initial list
l = [1,2,3,4,5,6,7,8]

#print the initial list
print("The initial list is: ")
print(l)

#choose n
n = int(input('Enter the value of n: '))

#increment all the values of the list by using map with help of lambda
l = list(map(lambda x: x+n , l))

#print the changed list
print("The changed list is: ")
print(l)

同样,如果要将两个列表的公共元素存储到新列表中,则可以使用过滤器。
要检查元素是否在List2中,我们使用了lambda函数。
示例代码如下

#initialize list1
list1 = [1,2,3,4,5,6,7,8]

#print list1
print("List1:", end = ' ')
print(list1)

#intialize list2 for select numbers
list2 = [2,3,5,9,12,14]

#print list2
print("List2:", end = ' ')
print(list2)

'''
compare using lambda function if the value is in list2, if yes then filer the result and assign to list3
'''
list3 = list(filter(lambda x: x in list2 , list1))

#print the changed list
print"List3 (List1 intersect List2 ):", end=' ')
print(list3)