python 函数式编程入门:Lambda 函数的魅力

python 函数式编程入门:Lambda 函数的魅力

  • 介绍
  • Lambda 函数的应用
    • 排序
    • 过滤
    • 映射
    • map、filter、reduce
    • 数据转换和筛选


介绍

Lambda 函数是 Python 中一个强大的功能,它可以快速创建匿名函数。在函数式编程中,lambda 函数发挥着至关重要的作用。本文将为您介绍 lambda 函数的基础知识、应用场景以及它与普通函数的区别。

什么是 Lambda 函数?

Lambda 函数是一种匿名函数,意味着它没有函数名。Lambda 函数的创建方式是使用关键字 lambda,后跟一个或多个参数,然后是冒号和函数表达式。例如:

lambda x: x * x

这个 lambda 函数接收一个参数 x,并返回 x 的平方。
Lambda 函数的语法和结构
Lambda 函数的语法非常简洁,它由以下部分组成:

  • lambda:关键字,表示这是一个 lambda 函数。
  • 参数:一个或多个参数,用逗号分隔。
  • ::冒号,用于分隔参数和函数表达式。
  • 函数表达式:一个简单的表达式,用于定义函数的行为。
    Lambda 函数与普通函数的区别
    Lambda 函数和普通函数的主要区别在于:
  1. 命名:Lambda 函数是匿名的,没有函数名;而普通函数需要一个唯一的函数名。
  2. 简洁性:Lambda 函数通常更简洁,适用于简单的函数逻辑。普通函数可以有更复杂的逻辑和多个返回值。
  3. 应用场景:Lambda 函数常用于需要函数作为参数的场景,如排序、过滤等。普通函数可以用于任何需要函数的地方。

Lambda 函数的应用

Lambda 函数在实际编程中有很多应用场景

排序

排序:使用 lambda 函数作为 sorted() 函数的 key 参数,对列表进行排序。

numbers = [1, 4, 2, 9, 3, 6]
sorted_numbers = sorted(numbers, key=lambda x: x)
print(sorted_numbers)  # 输出 [1, 2, 3, 4, 6, 9]

在这里插入图片描述

过滤

过滤:使用 lambda 函数作为 filter() 函数的 func 参数,过滤列表中的元素。

numbers = [1, 2, 3, 4, 5, 6]
filtered_numbers = list(filter(lambda x: x % 2 == 0, numbers))
print(filtered_numbers)  # 输出 [2, 4, 6]

在这里插入图片描述

映射

映射:使用 lambda 函数作为 map() 函数的 func 参数,对列表进行映射操作。

numbers = [1, 2, 3, 4, 5]
squared_numbers = list(map(lambda x: x * x, numbers))
print(squared_numbers)  # 输出 [1, 4, 9, 16, 25]

在这里插入图片描述

map、filter、reduce

Lambda 函数与 map()filter()reduce() 函数结合使用,可以实现函数式编程的强大功能。

  • map() 函数:对列表中的每个元素应用一个函数,并返回一个包含所有结果的新列表。
numbers = [1, 2, 3, 4, 5]
squared_numbers = list(map(lambda x: x * x, numbers))
print(squared_numbers)  # 输出 [1, 4, 9, 16, 25]

在这里插入图片描述

  • filter() 函数:对列表中的每个元素应用一个函数,并返回一个包含所有使函数返回 True 的元素的新列表。
numbers = [1, 2, 3, 4, 5, 6]
even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
print(even_numbers)  # 输出 [2, 4, 6]

在这里插入图片描述

  • reduce() 函数:对列表中的所有元素应用一个函数,并返回一个单一的值。
from functools import reducenumbers = [1, 2, 3, 4, 5]
sum_of_numbers = reduce(lambda x, y: x + y, numbers)
print(sum_of_numbers) # 输出 15

在这里插入图片描述

数据转换和筛选

Lambda 函数可以用于快速转换和筛选数据。例如,可以使用 lambda 函数来提取列表中大于等于 5 的元素

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]
greater_than_five = list(filter(lambda x: x >= 5, numbers))
print(greater_than_five)  # 输出 [5, 6, 7, 8, 9]

在这里插入图片描述
Lambda 函数是 Python 中函数式编程的基础之一。通过 lambda 函数,可以快速创建匿名函数,并在需要函数作为参数的场景中使用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/457083.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

算法效率的度量-时间空间复杂度

常对幂指阶 1.时间复杂度 事前预估 算法 时间开销 T(n) 与 问题规模 n 的关系( T 表示 “ time ”) 一般默认问题规模为n。 1.单循环 2.嵌套两层循环都为n 3.单层循环指数递增型 4.搜索型 链接 :第七章查找算法!&#xff01…

Visual Studio 20XX控制台程序鼠标点击阻塞问题

文章目录 方法一方法二 在Visual Studio 20xx编写的控制台程序中,当鼠标点击控制台时,会阻塞控制台程序运行,不按回车无法继续运行。 方法一 右击控制台标题栏,选择属性,去掉快速编辑模式(Q)的勾选,如&…

Django连接Mysql

修改setting.py配置文件 连接前,需要创建数据库 安装mysql客户端 因为连接需要一个客户端,而python没有客户端,所以就需要一个客户端来接收你填写的参数 pip install mysqlclient

【MySQL】学习如何使用DCL进行用户管理

🌈个人主页: Aileen_0v0 🔥热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​💫个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-JwFD16F1Kh0fle0X {font-family:"trebuchet ms",verdana,arial,sans-serif;font-siz…

Simulink|光伏阵列模拟多类故障(开路/短路/阴影遮挡/老化)

目录 主要内容 模型研究 1.正常模型 2.断路故障 3.短路故障 4.阴影遮挡 5.老化模型 结果一览 1.U-I曲线 2.P-V曲线 下载链接 主要内容 该模型为光伏阵列模拟故障情况simulink模型,程序实现了多种故障方式下的光伏阵列输出功率-电压-电流关系特…

【Vue3】解决路由缓存问题(响应路由参数的变化)

官方文档解释&#xff1a; 解决问题的思路: 让组件实例不复用,强制销毁重建监听路由变化,变化之后执行数据更新操作 方案一&#xff1a;给router-view添加key 以当前路由完整路径为key 的值&#xff0c;给router-view组件绑定 <RouterView :key"$route.fullPath&qu…

【MATLAB源码-第137期】基于matlab的NOMA系统和OFDMA系统对比仿真。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 NOMA&#xff08;非正交多址&#xff09;和OFDMA&#xff08;正交频分多址&#xff09;是两种流行的无线通信技术&#xff0c;广泛应用于现代移动通信系统中&#xff0c;如4G、5G和未来的6G网络。它们的设计目标是提高频谱效…

【若依】前后端分离板快速上手

&#x1f40c;个人主页&#xff1a; &#x1f40c; 叶落闲庭 &#x1f4a8;我的专栏&#xff1a;&#x1f4a8; SpringCloud MybatisPlus JVM 石可破也&#xff0c;而不可夺坚&#xff1b;丹可磨也&#xff0c;而不可夺赤。 若依框架 一、什么是若依二、运行若依项目2.1 官网下…

奚梦瑶何猷君香港共度佳节,幸福全家福彰显深厚亲情。

♥ 为方便您进行讨论和分享&#xff0c;同时也为能带给您不一样的参与感。请您在阅读本文之前&#xff0c;点击一下“关注”&#xff0c;非常感谢您的支持&#xff01; 文 |猴哥聊娱乐 编 辑|徐 婷 校 对|侯欢庭 从奚梦瑶父母与赌王家族的全家福中&#xff0c;我们可感受到两…

探索Gin框架:Golang Gin框架请求参数的获取

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站https://www.captainbed.cn/kitie。 前言 我们在专栏的前面几篇文章内讲解了Gin框架的路由配置&#xff0c;服务启动等内容。 专栏地址&…

BUUCTF-Real-ThinkPHP]5.0.23-Rce

漏洞介绍 这个版本容易存在我们都喜欢的rce漏洞&#xff01; 网站为了提高访问效率往往会将用户访问过的页面存入缓存来减少开销。而Thinkphp 在使用缓存的时候是将数据序列化&#xff0c;然后存进一个 php 文件中&#xff0c;这使得命令执行等行为成为可能&#xff01; ThinkP…

企业网站管理系统(多语言)

应用介绍 响应式PC&#xff1a; https://demo.ldcms.com.cn/ 响应式H5&#xff1a; 前端小程序&#xff1a; 后台登录网址&#xff1a; https://demo.ldcms.com.cn/ESBFdpKflc.php/index/login 前端截图&#xff1a; 后台截图&#xff1a; 本文来自&#xff1a;企业网站管理…