lambda函数

原文地址

引用图片地址

1.lambda和内置函数的理解和使用

lambda匿名函数使用场景:

常常会想写一个函数,但是这个函数只会被调用一次;

lambda简单语句构成:

执行:
f = lambda a,b:a+b
f(1,2)
输出:
3

描述:

f是匿名函数的名称,可以通过f来调用该函数,:左边是参数,可以有多个,右边是表达式或者返回值

lambda稍微复杂的语句构成:

执行:
f1 = lambda a,b,c:a+b if c>0 else a-b
f1(1,2,1)
输出:
3
-----
执行:
f1(1,2,-1)
输出:
-1

 

2.内置函数

1)map

map的定义为:map(func, *iterables),第一个参数为映射规则(表达式或函数),第二个参数是需要迭代运算的元组(列表,输入函数后不可变,因此使用元组

 

执行:
l1=[1,2,3]
list(map(lambda x:x+1,l1))
输出:
[2,3,4]
--------
执行:
[x+1 for x in l1]
输出:
  [2,3,4]
这是列表推导式表达

下边是加了条件判断(有if,必有else):

执行:
list(map(lambda x:x+1 if x > 1 else x,l1))
输出:
[1,3,4]
---------
执行:
[x+1 for x in l1 if x>1]
输出:
[3,4]

2)filter

指按照某种规则,筛选数据;

该内置函数的定义为:filter(function or None, iterable)

执行:
a = [1,2,3,4,5,6]
list(filter(lambda x:x>2,a))
输出:
[3,4,5,6]
--------
执行:
[x for x in a if x>2]
输出:
[3,4,5,6]
tips::
       还是列表表达式比较好看好懂

3)reduce

reduce是对输入列表的所有数据按照给定表达式进行迭代运算;

reduce(function, sequence[, initial]) -> value

tips:

注意的是,使用reduce函数,需要从functools中导入,而map、filter则不需要;

from functools import reduce
执行:
a = [1,2,3,4]
reduce(lambda x1,x2:x1+x2, a)
输出:
10
执行:
reduce(lambda x1,x2:x1*x2, a)
输出:
24

 

posted @ 2020-09-22 13:41  清风吹拂啊狂风肆虐  阅读(192)  评论(0编辑  收藏  举报