这两个函数在一些大型网络中经常联合在一起使用,我经常会用到,每次看了就懂了。然后下次遇到又忘了,然后还要再来搜,浪费时间。所以这次打算按照自己的理解和别人的例子,一块写在一个博客里,以后就忘记了就可以直接弄过来看。
一、lambda函数
举个小例子 先用普通的def函数写一个函数
def sq(x):
return x*x
map(sq,[y for y in range(10)])
然后再用lambda和map一起实现上个def函数
map(lambda x: x*x,[y for y in range(10)])
从这个简单的例子,我们可以看出,用lambda函数首先减少了代码的冗余,其次,用lambda函数,不用费神地去命名一个函数的名字,可以快速的实现某项功能,最后,lambda函数使代码的可读性更强,程序看起来更加简洁。
从上面这个简单的例子,也可以看出来lambda函数的语法是唯一的,其形式如下:
lambda argument_list:expersion
- argument_list表示参数列表
- expersion 函数表达式
1.1 lambda函数的用法
(1)直接赋给一个变量,然后再像一般函数那样调用
c=lambda x,y,z:x*y*z
c(2,3,4)
输出:24
当然,也可以在函数后面直接传递实参
(lambda x:x**2)(3)
输出:9
(2)将lambda函数作为参数传递给其他函数比如说结合map、filter、sorted、reduce等一些Python内置函数使用,下面举例说明。
fliter(lambda x:x%3==0,[1,2,3,4,5,6])
输出:[3,6]
squares = map(lambda x:x**2,range(5)
print(lsit(squares))
[0,1,4,9,16]
与sorted函数结合使用,比如:创建由元组构成的列表:
a=[('b',3),('a',2),('d',4),('c',1)]
按照第一个元素排序
sorted(a,key=lambda x:x[0])
输出:[('a',2),('b',3),('c',1),('d',4)]
按照第二个元素排序 .
sorted(a,key=lambda x:x[1])
[('c',1),('a',2),('b',3),('d',4)]
(3)求两个列表元素的和
a = [1,2,3,4]
b = [5,6,7,8]
print(list(map(lambda x,y:x+y, a,b)))
输出:[6,8,10,12]
二、map函数
描述 map() 会根据提供的函数对指定序列做映射。 第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的新列表。 语法 map() 函数语法: map(function, iterable, …)
参数 function – 函数 iterable – 一个或多个序列
先用def写一个函数
def square(x) :
return x ** 2
使用map写一个
map(square, [1,2,3,4,5])
输出:[1, 4, 9, 16, 25]
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]
|