python中 lambda, map ,filter ,reduce讲解

lambda

是匿名函数 同来表达简单的函数
使用lambda函数应该注意的几点:
lambda定义的是单行函数,如果需要复杂的函数,应该定义普通函数
lambda参数列表可以包含多个参数,如 lambda x, y: x + y
lambda中的表达式不能含有命令,而且只限一条表达式
默认返回表达式中的计算结果

例子,外部传参数
加法 。x,y为参数,返回x+y

f=lambda x,y:x+y
c=f(5,6)
print(c)
#c=11

直接传参数
两个括号,第一个括号把lambda括起来,第二个括号传入实参。

f=(lambda x,y:x+y)(5,6)
print(f)
#结果11

其他

import numpy as np
f=(lambda x,y:x+y)(5,6)
print(f)

def f1(x,y):
    return x+y
f2=(lambda x,y:f1(x,y))(5,6)
print(f2)

结果都是11

python序列内置函数

map ,filter ,reduce都是python 内置的序列处置函数。
map
map函数的原型是map(function, iterable, …),它的返回结果是可迭代对象。
参数function传的是一个函数名,可以是python内置的,也可以是自定义的。
参数iterable传的是一个可以迭代的对象,例如列表,元组,字符串这样的。

这个函数的意思就是将function应用于iterable的每一个元素。注意到没有,iterable后面还有省略号,意思就是可以传很多个iterable,如果有额外的iterable参数,并行的从这些参数中取元素,并调用function。如果一个iterable参数比另外的iterable参数要短,多余的将被舍弃。

f=lambda x,y:x+y
c=map(f,[1,2,3,4],[2,3,4,5,6])
print(c)
c=list(c)
print(c)

在这里插入图片描述

filter
filter()函数是 Python 内置的另一个有用的高阶函数,filter()函数接收一个函数 f 和一个序列,函数 f 的作用是对每个元素进行判断,返回 True或 False,filter()根据判断结果自动过滤掉不符合条件的元素,返回由符合条件元素组成的新的序列Iterator

#例子 过滤掉小于0的数

def f(x):
    if x>0:
        return x
c1=filter(f,[-1,-2,3,4,-7])
c=list(filter(f,[-1,-2,3,4,-7]))
print(c1)
print(c)

在这里插入图片描述
reduce
reduce函数与map函数有不一样地方,map操作是并行操作,reduce函数是把多个参数合并的操作,也就是从多个条件简化的结果。
reduce(function, sequence, initial)
sequence可迭代对象
function函数
initial初始值:只能指定一个,如果有多个参数,其余从sequence选

function参数是一个有两个参数的函数,reduce依次从sequence中取一个元素,和上一次调用function的结果做参数再次调用function。
第一次调用function时,如果提供initial参数,会以sequence中的第一个元素和initial作为参数调用function,否则会以序列sequence中的前两个元素做参数调用function。

#计算1到5的阶乘

def add(x, y):
    return x * y
print(reduce(add, [1,2,3,4,5]))

结果120

4*计算1到5的阶乘

from functools import reduce
def add(x, y):
    return x * y
print(reduce(add, [1,2,3,4,5],4))

结果480

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

总裁余(余登武)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值