APP下载

Python-lambda匿名函式 以及filter、map、reduce、apply函式

消息来源:baojiabao.com 作者: 发布时间:2026-05-28

报价宝综合消息Python-lambda匿名函式 以及filter、map、reduce、apply函式

在介绍高阶函式之前,先了解lambda 关键字的作用。

lambda 在Python 表示式内建立匿名函式,在Python中限制了 lambda 函式的定义体,只能使用纯表示式。换句话说,lambda 函式的定义体中不能赋值,也不能使用 while 和 try等 Python 语句。

lambda 匿名函式

lambda 函式的语法比较简单,形式为:lambda 引数列表: 表示式

sum = lambda x,y:x+y

sum(6+9)

filter 函式

功能: filter的功能是过滤掉序列中不符合函式条件的元素,当序列中要删减的元素可以用某些函式描述时,就应该想起filter函式。

呼叫: filter(function,sequence),function可以是匿名函式或者自定义函式,它会对后面的sequence序列的每个元素判定是否符合函式条件,返回True或者False,从而只留下True 的元素;sequence可以是列表、元组或者字串。

例子:

x = [1,2,3,4,5]

list(filter(lambda x:x%2==0,x)) # 找出偶数。python3.*之后filter函式返回的不再是列表而是迭代器,所以需要用list转换。

# 输出:

[2, 4]

map 函式

功能: 求一个序列或者多个序列进行函式对映之后的值,就该想到map这个函式,它是python自带的函式,在python3.*之后返回的是迭代器,同filter,需要进行列表转换。

呼叫: map(function,iterable1,iterable2),function中的引数值不一定是一个x,也可以是x和y,甚至多个;后面的iterable表示需要参与function运算中的引数值,有几个引数值就传入几个iterable。

例子:

x = [1,2,3,4,5]

y = [2,3,4,5,6]

list(map(lambda x,y:(x*y)+2,x,y))

# 输出:

[4, 8, 14, 22, 32]

reduce 函式

功能: 对一个序列进行压缩运算,得到一个值。但是reduce在python2的时候是内建函式,到了python3移到了functools模组,所以使用之前需要 from functools import reduce

呼叫: reduce(function,iterable),其中function必须传入两个引数,iterable可以是列表或者元组

例子:

x=[1,2,3,4,5]

from functools import reduce

reduce(lambda x,y: x+y, x)

apply 函式

功能: 是pandas中的函式,应用物件为pandas中的DataFrame或者Series。大致有两个方面的功能:一是直接对DataFrame或者Series应用函式,二是对pandas中的groupby之后的聚合物件apply函式

呼叫: apply(function,axis),function表明所使用的函式,axis表明对行或者列做运算

例子:

import numpy as np

import pandas as pd

a = np.random.randint(low=0,high=4,size=(2,4))

data = pd.DataFrame(a)

data.apply(lambda x:x*10)

简而言之,filter和map都是python内建的函式,可以直接呼叫,reduce在functools模组,apply在pandas模组。

想知道当前程式或是程序执行到某个地方时,内存里有哪些变数,获取他们的name 列表:

dir()

删除单个变数

del x # 删除变数 x

2019-12-01 08:51:00

相关文章