python中两种函数
- def命名的函数
- 匿名函数(即lambda表达式)
lambda主体是个表达式,起到函数速写的功能,形式:
参数名:表达式
例如:
例1:
简单加减法
>>> f = lambda x,y: x+y+3
>>> f(1,2)
6
例2:
与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)]
例3:
lambda表达式中使用if,else语句
lower =lambda x,y: x if x < y else y
print(lower(3,4)) # 输出:3
map函数:
格式:
map(function,iterable,...)
第一个参数是函数名(也可以是lambda表达式,后面的参数是一个或多个可迭代的序列)
把函数依此作用到每个序列内的每个元素
>>> list(map(lambda x, y: x+y,[1,3,5,7,9],[2,4,6,8,10]))
[3, 7, 11, 15, 19]
reduce函数(累积函数)
包:from functools import reduce
格式:reduce(fun,iter,init)
func为函数,iter为序列,init为固定初始值,无初始值则从序列第一个开始
例如:
from functools import reduce
res=reduce(lambda x,y:x*y,[2,2,3,3])
print(res)
# 36
详细解释:
step1:
list[0],list[1]先将传入lambda表达式,即22=4
step2:
4和list[2]传入lambda表达式,即43=12
step3:
12和list[3]传入lambda表达式,即123=36
即:2233=36
filter()函数是 Python 内置函数,filter()函数接收一个函数 f 和一个list,这个函数 f 的作用是对每个元素进行判断,返回 True或 False,filter()根据判断结果自动过滤掉不符合条件的元素,返回由符合条件元素组成的新list
例1:删除奇数
print(list(filter(lambda x:x%2==0,[1,2,3,4,5])))
#[2, 4]
例2:删除 None 或者空字符串
def is_not_empty(s):return s and len(s.strip()) > 0
list(filter(is_not_empty, ['test', None, '', 'str', ' ', 'END']))
#['test', 'str', 'END']