【Python】lambda表达式、map函数、reduce函数、filter函数

news/2024/7/8 3:13:30

一、lambda表达式

简单来说,所以只用一行或者一句话来表达的函数就可以用lambda表达式,也称为lambda函数;

【举个栗子】

def f(x):
    return x * x


f(3)

上面的函数的含义是:给函数f传递一个参数x,它会返回x*x;所以我们传递给函数f一个实参3,它就返回3*3,也就是9;


现在我们将上面的代码改成lambda表达式:

# 如果将上面的函数转换成lambda表达式
# 具体格式:

f = lambda x: x * x # 这里的f是函数名,所以调用该函数的时候就是函数名()


print(f(5))

# 这里的f是函数名,所以调用该函数的时候就是函数名()

# lambda之后写一个x表示输入;
# 输入之后写输出,输入输出之间用英文的冒号:分开
# 冒号之后写 x*x 表示输出的结果是x*x
# 所以函数 f = lambda x: x * x 的含义是,输入一个x输出结果为x*x

 可以看出来结果一样;


那lambda表达式除了输入一个数之外,还可以输入多个数吗?

当然可以!

这里我们输入两个数:

f = lambda x, y: x * y  

print(f(2, 3))
# 函数 f = lambda x, y: x * y  的含义是,输入一个x,y输出结果为x*y

lambda表达式还可以放进函数里进行嵌套;

【举个栗子】

实现计算a * x * x + b * x + c;

def quar(a, b, c):
    return lambda x: a * x * x + b * x + c


f = quar(1, -1, 2)
print(f(5))

# f = quar(1, -1, 2)表示给函数quar传递实参,此时a=1,b=-1,c=2

# print(f(5)) 表示输入的x为5;

注意 f = quar(1, -1, 2)只是给函数传递了实参,f(5)才是真正掉调用了该函数


二、Filter函数

filter 函数用于过滤元素,将 函数对象(function) 依次作用于 可迭代对象(iterable)的每个元素,将返回值为 True 的 元素组成一个 新的可迭代对象 返回。

(python3 统一返回迭代器;需要通过list函数,set函数将他们转换)

它的使用形式如下:

 filter(function, iterable)

# function 表示一个函数对象

# iterable表示一个可迭代对象


【代码演示】

num_list = [1, 2, 3, 4, 5, 8]


def f(x):
    if x % 2 == 0:
        return x


print(list(filter(f, num_list)))

解释,如果输入的是偶数,返回该值;


将f函数改成lambda表达式:

num_list = [1, 2, 3, 4, 5, 8]
print(list(filter(lambda x: x % 2 == 0, num_list)))


三、Map函数

Map函数通常有两个参数,第一个参数是函数对象,第二个参数就是可迭代对象;

Map函数的作用是,将可迭代对象的每一个元素都应用到第一个参数函数中;

 在上面这个图片,cook是一个函数对象,是一个可迭代对象,Map函数就是将可迭代对象中的每一个元素拿出来,放在cook这个函数对象里“执行”,将,变成了


【举个栗子】

num_list = [1, 2, 3, 4, 5]  # 一个可迭代对象


def duble(x):
    return x * 2


result = map(duble, num_list)
# print(result)
# 直接输出map函数,输出的是一个迭代器<map object at 0x00000173F3D1B700>
# 想要正常输出必须将它转换
print(list(result))
# print(result)
# 直接输出map函数,输出的是一个迭代器<map object at 0x00000173F3D1B700>

# 函数后面不加括号,表示它是整个函数体,是一个函数对象;

# 函数后面加括号(括号中必须传入实参),表示调用该函数的执行结果


四、Reduce函数

reduce() 函数会对参数序列中元素进行累积。

Reduce函数虽然和Map函数的参数形式比较类似,但它们有一些本质的区别;

是一个函数对象,是一个可迭代对象,它在运行的时候会这样操作:将后面列表中的两个元素作为一组参数传递给eat,接下来将这个生成的结果和下一个元素作为一组参数再传递给eat,以此类推,直到所有的元素都被传递,则生成最后的结果;

  


【举个栗子】


【代码演示】

from functools import reduce


def add(x, y):
    return x + y


num_list = [1, 2, 3, 4, 5]
print(reduce(add, num_list))

在Python3中,reduce函数已经不是一个内置函数,已经把它调整到一个模块(functools)中了,所以使用reduce函数的时候要进行导包;

reduce函数和其余两个函数的区别:

        使用map函数,结果是一个map对象;使用filter函数的时候,结果是一个filter对象,我们都需要使用list函数将他们转换为列表;

        而ruducr函数,他在add函数里的作用是求和最后生成的是一个和的结果,所以这里就直接输出流15,不需要进行转换。

我们最开始学了lambda表达式,只用一行就可以表达的函数都可以写成lambda表达式,显然,上面的add函数符合标准,我们将它改成lambda表达式:

from functools import reduce

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

result = reduce(lambda x, y: x + y, num_list)
print(result)

 这样写代码更加简洁了,但是写代码也不是越简洁越好。


http://lihuaxi.xjx100.cn/news/1007402.html

相关文章

Unity环境下的常用数值静态引用

1、三角函数 using UnityEngine;public class TriFun {static float[] _Sin32s;public static float[] Sin32s{get{if (_Sin32s null || _Sin32s.Length 0){_Sin32s new float[32];float angleDeta Mathf.PI / 16;_Sin32s[0] 0;_Sin32s[8] 1;_Sin32s[16] 0;_Sin32s[24]…

NeRF代码学习

学习nerf_pytorch项目代码&#xff0c;以及pytorch_lighting形式代码&#xff0c; 首先需要读取数据&#xff0c;将数据输入神经网络进行训练&#xff08;包括生成编码、生成光线、计算密度颜色、体渲染步骤&#xff09;&#xff0c;将数据输出 1、数据集读取 代码中给出的样…

【MySQL数据库原理】MySQL Community安装与配置

目录 1、介绍、安装与配置数据库2、操作MySQL数据库3、MySQL数据库原理1、介绍、安装与配置数据库 下载安装包:https://download.csdn.net/download/weixin_41194129/87672588 MySQL Installer - Community 是一个用于安装、配置和管理 MySQL 服务器的官方工具。以下是使用 …

VSCode+PyQt之Python界面编写

环境配置 1、python3.9 2、安装库 pip install PyQt5 pip install PyQt5-tools3、选择python解释器 4、在VSCode里下载并安装PYQT Integration 5、配置pyqt integration 5.1 将下面改为&#xff1a;D:\ProgramFiles\Python39\Scripts\pyuic5.exe 5.2 将下面的改为&#xff…

IEEE754单精度浮点数与十进制相互转化

什么是IEEE754单精度浮点数 IEEE 754单精度浮点数格式使用32位二进制表示&#xff0c;其中1位用于符号位&#xff0c;8位用于指数&#xff0c;23位用于尾数。 以下是IEEE 754单精度浮点数的详细格式&#xff1a; SExpFrac18 bits23 bits 其中&#xff0c;S表示符号位&#x…

食堂总是拥挤不堪?解决用餐拥挤,教你一招

随着近几年科技的快速发展&#xff0c;行业里出现了很多新的名词&#xff0c;比如智慧社区、智慧旅游、智慧建筑&#xff0c;那么智慧食堂是什么呢&#xff1f;它又是如何实现全自助、全智能消费&#xff1f; 在先进的智能技术以及市场需求带动下&#xff0c;智慧食堂经历了由传…

【案例教程】大气颗粒物PMF源解析实践技术

颗粒物污染不仅对气候和环境有重要影响&#xff0c;而且对人体健康有严重损害&#xff0c;尤其在一些重污染天气&#xff0c;如灰霾和沙尘暴等。为了高效、精准地治理区域大气颗粒物污染&#xff0c;首先需要了解颗粒物的来源。因此&#xff0c;颗粒物源解析成为目前解决大气颗…

关于工商详细信息 API,你想了解的都在这里了

概述 工商详细信息 API 是一种基于云计算和数据挖掘技术的 API&#xff0c;旨在帮助用户快速获取公司的详细信息。通过使用这个 API&#xff0c;用户可以输入公司的名称或注册号&#xff0c;获取公司的详细信息&#xff0c;例如公司名称、法定代表人、注册资本、注册地址、经营…