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

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

猜你喜欢

转载自blog.csdn.net/kobeyu652453/article/details/106570561