当前位置: 代码迷 >> 综合 >> python 中的lambda,map,reduce,filter
  详细解决方案

python 中的lambda,map,reduce,filter

热度:38   发布时间:2023-11-11 01:47:31.0

python中两种函数

  1. def命名的函数
  2. 匿名函数(即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表达式,即4
3=12
step3:
12和list[3]传入lambda表达式,即123=36
即:2
233=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']
  相关解决方案