Python中的lambda、map、filter、reduce、zip
标签:简单并且优势简洁pytholongest生成ret需求
lambda
lambda是匿名函数,也就是没有名字的函数。lambda的语法非常简单:
下面是一个lambda表达式的简单例子:
注意:我们可以把lambda表达式赋值给一个变量,然后通过这个变量来使用它。
>>> my_sum = lambda x, y: x+y
>>> my_sum(1, 2)
3
下图是定义lambda表达式和定义一个普通函数的对比:
注意:
使用lambda表达式并不能提高代码的运行效率,它只能让你的代码看起来简洁一些。
map
map()接收两个参数func(函数)和seq(序列,例如list)。如下图:
map()将函数func应用于序列seq中的所有元素。在Python3之前,map()返回一个列表,列表中的每个元素都是将列表或元组“seq”中的相应元素传入函数func返回的结果。Python 3中map()返回一个迭代器。
因为map()需要一个函数作为参数,所以可以搭配lambda表达式很方便的实现各种需求:
- 例子1–将一个列表里面的每个数字都加100:
>>> l = [11, 22, 33, 44, 55]
>>> list(map(lambda x:x+100, l))
[111, 122, 133, 144, 155]
- 例子2–
使用map就相当于使用了一个for循环,我们完全可以自己定义一个my_map函数:
def my_map(func, seq):
result = []
for i in seq:
result.append(func(i))
return result
测试一下我们自己的my_map函数:
>>> def my_map(func, seq):
… result = []
… for i in seq:
… result.append(func(i))
… return result
…
>>> l = [11, 22, 33, 44,