map()函数 与 lambda函数的用法详解

目录

1 map()函数的语法

2 lambda函数的语法

3 lanbda函数作为参数传递给map()函数


1 map()函数的语法

map是python的内置函数,会根据提供的函数对指定的序列做映射。

map()函数的格式是:

map(function,iterable,...)

第一个参数接受一个函数名,后面的参数接受一个或多个可迭代的序列,返回的是一个集合。

把函数依次作用在list中的每一个元素上,得到一个新的list并返回。注意,map不改变原list,而是返回一个新list。

map()函数实例:

#例1

list1=[1,2,3,4,5]
map(float,list1)

#结果返回:
[1.0,2.0,3.0,4.0,5.0]


#例2
def square(x):
    return x**2

map(square,[1,2,3,4,5])

#结果如下:
[1,4,9,16,25]

2 lambda函数的语法

lambda函数在python编程语言中使用频率非常高,使用起来非常灵活、巧妙。

lambda函数只包含一个语句,表现形式如下:

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

lambda是 Python 预留的关键字,[arg…] 和 expression 由用户自定义。

[arg…] 是参数列表,它的结构与 Python 中函数(function)的参数列表是一样的。
[arg…] 可以有非常多的形式。例如:

a,b
a=1,b=2
*args
**kwargs
a,b=1,*args
空
......

expression 是一个参数表达式,表达式中出现的参数需要在[arg......]中有定义,并且表达式只能是单行的,只能有一个表达式。
以下都是合法的表达式:

1
None
a + b
sum(a)
1 if a>10 else 0
......

lambda特性

1)lambda函数是匿名的

所谓匿名函数,通俗地说就是没有名字的函数。lambda函数没有名字。

2)lambda函数有输入和输出:

输入是传入到参数列表argument_list的值,输出是根据表达式expression计算得到的值。

3)lambda函数拥有自己的命名空间:

不能访问自己参数列表之外或全局命名空间里的参数,只能完成非常简单的功能。

常见的lambda函数示例:

lambda x,y:x*y      #函数输入为x和y,输出是它们的积x*y
lambda:None         #函数没有输入参数,输出是None
lambda *args:sum(args)  #输入是任意个数参数,输出是它们的和(隐形要求输入参数必须能进行算数运算)
lambda **kwargs:1      #输入为任意键值对参数,输出是1

lambda常见用法:

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

示例:

add = lambda x,y:x+y

#相当于定义了加法函数 lambda x,y:x+y,并将其赋值给add,这样变量add就指向了具有加法功能的函数
#这时如果我们执行add(1,2),其输出结果就为3

2)将lambda函数赋值给其他函数,从而将其他函数用改lambda函数替换。

示例:

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

3)将lambda函数作为参数传递给其他函数。

例如传递给map()函数

3 lanbda函数作为参数传递给map()函数

示例:

#计算平方数的匿名函数写法
map(lambda x:x**2,[1,2,3,4,5])
#结果:
[1,4,9,16,25]


#提供两个列表,将其相同索引位置的列表元素进行相加
map(lambda x,y:x+y,[1,3,5,7,9],[2,4,6,8,10])
#结果
[3,7,11,15,19]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

L_bloomer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值