600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > python内置函数lambda函数常见用法

python内置函数lambda函数常见用法

时间:2020-03-02 11:29:28

相关推荐

python内置函数lambda函数常见用法

一、关于lambda函数;

是Python编程语言中使用较多的一个内置函数。他可以在不指定函数名称的情况下定义一些简单逻辑的函数。可以定义一个函数给变量。

二、使用方法:

语法:

在Python中,lambda的语法形式如下:

lambda 参数: 表达式

其中,lambda是固定的关键字,参数和表达式由用户自定义:

这里的参数是参数列表,它的结构与Python中函数(function)的参数列表是一样的。具体来说,参数可以有非常多的形式。例如:

a=1, b=2

*args

**kwargs

等等!表达式是一个关于参数的公式。表达式中的参数需要在参数中预定义,且表达式是单行的:

None

a + b

sum(a)

X if X >Y else Y

…这里的lambda 参数: 表达式表示的是一个函数。这个函数叫做lambda函数,这个函数已参数为输入,表达式运行结果为输出,用完就没有了。不会继续存在

一些lambda函数示例:

lambda x, y: xy;函数输入是x和y,输出是它们的积xy

lambda *args: sum(args); 输入是任意个数的参数,输出是它们的和(注意要求输入参数必须能够进行加法运算)

lambda **kwargs: 1;输入是任意键值对参数,输出是1

常见用法(通常是和一些高阶函数组合使用!):

由于lambda本质上只有一种用法,那就是定义一个lambda函数。在实际中,根据这个lambda函数应用场景的不同,lambda函数有以下几种用法:

a.将lambda函数赋值给一个变量,通过这个变量间接调用该lambda函数。

例如,执行语句add=lambda x, y: x+y,定义了加法函数lambda x, y: x+y,并将其赋值给变量add,这样变量add便成为具有加法功能的函数。

例如,执行add(3,2),输出为5。

b.将lambda函数赋值给其他函数,从而将其他函数用该lambda函数替换。

例如,为了把标准库time中的函数sleep的功能屏蔽(Mock),我们可以在程序初始化时调用:time.sleep=lambda x:None。这样,在后续代码中调用time库的sleep函数将不会执行原有的功能。例如,执行time.sleep(3)时,程序不会休眠3秒钟,而是什么都不做。

c. 将lambda函数作为其他函数的返回值,返回给调用者。

函数的返回值也可以是函数。例如return lambda x, y: x+y返回一个加法函数。这时,lambda函数实际上是定义在某个函数内部的函数,称之为嵌套函数,或者内部函数。对应的,将包含嵌套函数的函数称之为外部函数(闭包)。内部函数能够访问外部函数的局部变量。

d. 将lambda函数作为参数传递给其他函数(高阶函数)。

部分Python内置函数接收函数作为参数。典型的此类内置函数有filter/map/sorted。

高阶函数:

定义:

1.函数接受一个或多个函数作为参数传入

2.函数返回一个函数

以上两个条件满足一个条件就称之为高阶函数

filter函数:返回满足过滤要求的元素

用法:

filter(function/None, iterable)–>filter object

参数1:函数或空,要执行过滤的条件

参数2:可迭代对象,要被过滤的对象

返回值:filter函数执行完成后,会返回一个新的可迭代对象

此时lambda函数用于指定过滤列表元素的条件。

例如:

filter(lambda x: x % 3 == 0, [1, 2, 3])指定将列表[1,2,3]中能够被3整除的元素过滤出来,其结果是[3]

# filter函数"""作用:筛选可迭代对象iterable中的数据,返回一个可迭代对象,此可迭代对象将对iterable进行筛选函数func将对iterable中的每个元素进行求值,返回False 丢弃,返回True则保留此数据```python"""# 示例:求奇数def isodd(x):return x % 2 == 1

打印10内的奇数

for x in filter(isodd, range(0, 10)):

print(x)

生成10以内的偶数,用filter实现,使用列表推导式

L = [x for x in filter(lambda x1: x1 % 2 == 0, range(0, 10))]

print(L)

sorted函数:排序

作用:讲原可迭代对象的数据进行排序,生成排序后的列表

格式:sorted(iterable, key = None, reverse = False)

iterable:可迭代对象

key:绑定函数,用来提供一个排序的依据

reverse 是否降序排列-从大到小,默认从小到大

用法:sorted(待排序的对象,key=xx, reverse=False)

此时lambda函数用于指定对列表中所有元素进行排序的准则。

示例:

L = [5, -2, -4, 0, 3, 1]

L2 = sorted(L)

L3 = sorted(L, reverse=True)

L.sort(reverse=True)

print(L)

print(L2)

print(L3)

按离0最近来排序

L4 = sorted(L, key=abs)

print(L4)

“”"

[-4, -2, 0, 1, 3, 5]

[5, 3, 1, 0, -2, -4]

[0, 1, -2, 3, -4, 5]

“”"

**map函数:将可迭代对象按函数执行返回新的迭代对象。**用法:map(func, *iterables)-->map objectfunc:要执行的函数,iterable:可迭代对象,func的输入参数作用:将iterable中的元素,作为输入放到func中执行,得到一个行的iterable1,并返回。注意,map不改变原iterable,而是返回一个新iterable1此时lambda函数用于指定对列表中每一个元素的共同操作。例如map(lambda x: x+1, [1, 2,3])将列表[1, 2, 3]中的元素分别加1,其结果[2, 3, 4]。示例:```python# 1.求1--9 的平方和s = sum(map(lambda x: x ** 2, range(1, 10)))print(s)# 3.求1 ** 9 + 2 **8 + 3 **7 +。。。 + 9**1 的和s3 = sum(map(pow, range(1, 10), range(9, 0, - 1)))print(s3)

."""map函数:用法:map(function,iterable,...)function:接受一个函数名,用于对后面的可迭代对象进行操作; iterable:接受一个或多个可迭代的序列,可以有多个可迭代对象return:返回一个通过函数处理之后的map对象map函数返回的是一个map对象,要获取里面的值,需要将map对象转化未list、tuple 等对象"""def calculator_add(x, y):return x + yres1 = list(map(calculator_add, [1, 2, 3, 4, 5], [1, 2, 3, 4, 5]))print(res1)# [2, 4, 6, 8, 10]# map 函数与lambda函数使用# 一、返回列表res2 = list(map(lambda x, y: x * y, [1, 2, 3, 4, 5], [1, 2, 3, 4, 5]))print(res2)# [1, 4, 9, 16, 25]# 二、返回元组res3 = list(map(lambda x, y: (x * y, x + y), [1, 2, 3, 4, 5], [1, 2, 3, 4, 5]))print(res3)# [(1, 2), (4, 4), (9, 6), (16, 8), (25, 10)]# map 函数传入function。可以将多个列表相同位置的元素归并到一个元组# 示例:res4 = (list(map(lambda x, y: (x, y), [1, 2, 3, 4, 5], [1, 2, 3, 4, 5])))print(res4)# [(1, 1), (2, 2), (3, 3), (4, 4), (5, 5)]# map可以直接将字符串转换为列表/元组res5 = tuple(map(int, "123456789"))res6 = list(map(int, "987654321"))print(res5)print(res6)# (1, 2, 3, 4, 5, 6, 7, 8, 9)# [9, 8, 7, 6, 5, 4, 3, 2, 1]# map函数可以获取字典中的key,放到列表、元组中res7 = list(map(str, {"name": "xiaoli", "age": 20, "gender": "girl"}))print(res7)# ['name', 'age', 'gender']

Reference:/quanlingtu1272/article/details/95482253?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522160269214819724838547536%2522%252C%2522scm%2522%253A%25220713.130102334…%2522%257D&request_id=160269214819724838547536&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2alltop_click~default-1-95482253.pc_first_rank_v2_rank_v28&utm_term=python+map&spm=1018.2118.3001.4187

(个人学习记录。也参考了一些博文,还有一个博主的链接找不到了,如有问题,欢迎指正,共同进步)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。