1.lambda和内置函数的理解和使用
lambda匿名函数使用场景:
常常会想写一个函数,但是这个函数只会被调用一次;
lambda简单语句构成:
执行:
f = lambda a,b:a+b
f(1,2)
输出:
3
描述:
f是匿名函数的名称,可以通过f来调用该函数,:左边是参数,可以有多个,右边是表达式或者返回值
执行:
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