目录
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]