这里的lambda是一个内置函数,简易快速定义函数,参数可以为一个或者多个,但返回结果只能为一个对象,可以写成多个”对象”组成的元祖,名义上只能为一个对象.
例如:lambda x,y,x:(x+1,y+2,z*3)
1 f = lambda x, y, z: (x + 1, y + 2, z * 3) 2 print(f(1,2,3))
打印结果:
(2, 4, 9)
1 msg = ‘wangdachui‘ 2 print(list(map(lambda x: x.upper(), msg)))
打印结果:
[‘W‘, ‘A‘, ‘N‘, ‘G‘, ‘D‘, ‘A‘, ‘C‘, ‘H‘, ‘U‘, ‘I‘]
解释说明:
这里是map函数和lambda结合使用的例子,即先有lambda定义一个函数,lambda x:x.upper(),将输入传入参数x转换成大写,然后再是次外层map函数,把可迭代对象msg(字符串)中每一个值依次作为参数传给最里层lambda定义的函数,得到一个迭代器,再往外一层,用list()函数,将迭代器转换成列表,从而打印出来.
filter是一个依据bull量为依据对可迭代对象进行筛选的内置函数,演示代码如下:
1 # 需求:有一个人名列表,将所有‘zhang‘打头的去掉,只保留其他的,打印出来 2 people_list = [‘zhangsan‘, ‘wangwu‘, ‘zhangsi‘, ‘zhangqi‘, ‘liuba‘] 3 print(list(filter(lambda x: not x.startswith("zhang"), people_list))) 4 5 # 输出结果: 6 # [‘wangwu‘, ‘liuba‘]
这里可以解释为:在最里层使用lambda定义一个返回值为布尔量的函数判断传入的参数是否以‘zhang‘为开头,但是这里的not表示,要求x不能以"zhang"打头,否则返回False,但是filter函数则筛选出可迭代对象中,能让内层函数返回值为True的元素,
这样就将所有不是以"zhang"开头的人名保留,然后结果list函数和print作用,打印出最终结果,见代码.
原文:https://www.cnblogs.com/zehuang/p/14354309.html