|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 景命 于 2017-7-13 00:12 编辑
知识点:
- lambda表达式:
Python允许使用lambda关键字来创建匿名函数(匿名函数:所谓匿名,意即不再使用def语句这样标准的形式定义一个函数。)。
使用lambda表达式格式:
函数名 = lambda 函数参数:函数返回值(函数语句)
例:>>> def ds(x):
return x * 2 + 1
>>> ds(5)
11
#将函数ds()改变为lambda关键字创建形式
>>> s = lambda x : x * 2 + 1
>>> s(5)
11
lambda表达式的作用:
1.Python写一些执行代码时,使用lambda就可以省下定义函数的过程,比如说我们只是需要写个简单的代码来管理服务器的时间,我们就不需要专门的定义一个函数然后再写调用,使用lambda就可以使得代码更精简。
2.对于一些比较抽象并且整个程序执行下来只需要调用一两次的函数,有时候给函数起个名字也是比较头疼的事情,使用lambda就不需要考虑命名问题了。
3.简化代码的可读性,由于普通的屌丝函数阅读经常要跳到开头的def定义部分,使用lambda表达式可以省去这样的步骤。
- filter()函数:
filter(过滤器)函数,用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。如果第一个参数是一个函数的话,则将第二个可迭代对象里的每个参数,作为函数的参数进行计算,将返回True的值给筛选出来,并组成列表。如果第一个参数为None,那么就将第二个参数里为True的值给筛选出来。
参数:filter(function or None,iterable),
function or None : 参数一可以是函数或者None对象。
iterable:参数二是可迭代对象。
返回值:返回一个列表。如果第一个参数是函数的话,那么将能让函数返回值为真的参数返回。否则返回可迭代对象中为真的值。
例:
1):>>> s = filter(None,[1,2,3,0,False,True])
>>> s
<filter object at 0x0000000002FE6748> #此时查看s,发现s为一个filter的对象。
>>> s = list(s) #将变量s转换为列表。
>>> s
[1, 2, 3, True]
2)>>> def a(x):
'筛选奇数函数。'
return x % 2 #如果x除2余0的话,那么返回值为0。
>>> list(filter(a,range(10))) #如果返回值为0,那么不会filter函数就不会将能让函数a返回值为零的参数返回。(好绕的样子)
[1, 3, 5, 7, 9]
lambda表达式和filter()函数结合使用:
list(filter(lambda 函数参数 : 函数返回值 , 可迭代对象)),即在filter函数里用lambda表达式直接定义匿名函数。>>> list(filter(lambda x : x % 2,range(10))) #将例2)精简为1行
[1, 3, 5, 7, 9]
- map(function , iterable , ……)函数:
在编程中一般解释为映射。类似于filter()方法(可以理解为filter函数的简化版),第一个参数为函数,第二个参数为一个或者多个序列。将序列中的每一个元素作为函数的参数,返回每次调用函数的返回值组成的新列表。
参数:
function:函数。
iterable:一个或者多个可迭代对象。
返回值:返回每次调用函数的返回值组成的新列表。
例:>>> def a(x):
return x % 2 == 0
>>> list(map(a,range(10)))
[True, False, True, False, True, False, True, False, True, False]
也可以和lambda表达式结合使用:>>> list(map(lambda x : x % 2,range(3)))
[0, 1, 0]
- 参数并行问题:
>>> def a(x,y,z):
return x * 100 + y * 10 + z
>>> list(map(a,range(1,4),range(4,7),range(7,10))) #将 range(1,4),range(4,7),range(7,10) 这三个可迭对象中的值拿出来作为函数a的三个参数。
[147, 258, 369]
map()函数看上去类似于列表推导式
>>> def a(x):
return x + 10
>>> print([a(i) for i in range(1,4)]) #列表推导式方式。
[11, 12, 13]
>>> list(map(a,range(1,4))) #map()函数方式。
[11, 12, 13]
但实际上还是有差别的,列表推导式没有参数并行的方式,map()函数可以参数并行。
>>> def a(x,y,z):
return x * 100 + y * 10 + z
>>> print([a(x,y,z) for x in range(1,4)for y in range(4,7)for z in range(7,10)]) #列表推导式方式
[147, 148, 149, 157, 158, 159, 167, 168, 169, 247, 248, 249, 257, 258, 259, 267, 268, 269, 347, 348, 349, 357, 358, 359, 367, 368, 369]#参数是以循环嵌套的方式输入函数a()中的
>>> list(map(a,range(1,4),range(4,7),range(7,10))) #map()函数方式。
[147, 258, 369]#参数是以并行的方式输入的函数a()中的
|
评分
-
查看全部评分
|