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

news2024/9/21 2:36:29

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 reduce

numbers = [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.coloradmin.cn/o/1437450.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

消息队列使用的四种场景介绍

一、简介 消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削锋等问题。 实现高性能,高可用,可伸缩和最终一致性架构。 使用较多的消息队列有ActiveMQ,RabbitMQ,ZeroMQ…

java内部类概述及使用方法

前言: 打好基础,daydayup! 内部类 内部类概述: 内部类是类的五大成分之一(成员变量,方法,构造器,内部类,代码块),如果一个类定义在另一个类的内部&#xff…

『运维备忘录』之 Yum 命令详解

运维人员不仅要熟悉操作系统、服务器、网络等只是,甚至对于开发相关的也要有所了解。很多运维工作者可能一时半会记不住那么多命令、代码、方法、原理或者用法等等。这里我将结合自身工作,持续给大家更新运维工作所需要接触到的知识点,希望大…

什么是UI设计?

用户界面(UI)它是人与机器互动的载体,也是用户体验(UX)一个组成部分。用户界面由视觉设计 (即传达产品的外观和感觉) 和交互设计 (即元素的功能和逻辑组织) 两部分组成。用户界面设计的目标是创建一个用户界面&#xf…

新版本nginx安装提示需要openssl的问题

新版本的nginx安装的时候未发现openssl的路径,有两种方式解决 方式一: 找到本地nginx的解压目录中 ,例如我的放到root下面了。 进入 /root/nginx1.24.0/auto/lib/openssl/conf 目录下修改内容 ,这两行都需要修改,…

TCP 粘包/拆包

文章目录 概述粘包拆包发生场景解决TCP粘包和拆包问题的常见方法Netty对粘包和拆包问题的处理小结 概述 TCP的粘包和拆包问题往往出现在基于TCP协议的通讯中,比如RPC框架、Netty等 TCP 粘包/拆包 就是你基于 TCP 发送数据的时候,出现了多个字符串“粘”…

微信小程序(三十七)选项点击高亮效果

注释很详细&#xff0c;直接上代码 上一篇 新增内容&#xff1a; 1.选择性渲染类 2.以数字为需渲染内容&#xff08;数量&#xff09; 源码&#xff1a; index.wxml <view class"Area"><!-- {{activeNumindex?Active:}}是选择性添加类名进行渲染 -->&l…

P1808 单词分类

P1808 单词分类 题目描述 Oliver 为了学好英语决定苦背单词&#xff0c;但很快他发现要直接记住杂乱无章的单词非常困难&#xff0c;他决定对单词进行分类。 两个单词可以分为一类当且仅当组成这两个单词的各个字母的数量均相等。 例如 AABAC&#xff0c;它和 CBAAA 就可以…

Linux(三)--文件系统

Linux命令简介 [rootlocalhost ~]# 表示 Linux 系统的命令提示符。 []&#xff1a;这是提示符的分隔符号&#xff0c;没有特殊含义。 root&#xff1a;显示的是当前的登录用户&#xff0c;笔者现在使用的是 root 用户登录。 &#xff1a;分隔符号&#xff0c;没有特殊含义。 l…

【数据分享】1929-2023年全球站点的逐月平均降水量(Shp\Excel\免费获取)

气象数据是在各项研究中都经常使用的数据&#xff0c;气象指标包括气温、风速、降水、湿度等指标&#xff0c;说到常用的降水数据&#xff0c;最详细的降水数据是具体到气象监测站点的降水数据&#xff01; 有关气象指标的监测站点数据&#xff0c;之前我们分享过1929-2023年全…

多维数组和多维指针

文章目录 No1No2No3No4No5No6 一定要理解跨度 No1 #include <iostream> using namespace std; int main() {int a[]{1,2,3,4,5};//&a1是整个数组的一个跨度&#xff08;无论a是多少维数组&#xff09;int *p (int*)(&a1);cout<< *(a1) <<endl;//2…

《向量数据库指南》——Milvus Cloud 「部署」:简化部署一直在路上

“docker-compose 能部署分布式吗?”"单机部署为什么还依赖这么多组件?"“大家 Milvus Cloud 集群部署有没有实践过比较好的方案?” 作为一个开源数据库,是否能够进行快速部署,是所有工作的前提。在简化部署的道路上,社区从来没有停止过脚步。2023 年,社区推…

SpringBoot+随机盐值+双重MD5实现加密登录

&#x1f3e1;浩泽学编程&#xff1a;个人主页 &#x1f525; 推荐专栏&#xff1a;《深入浅出SpringBoot》《java对AI的调用开发》 《RabbitMQ》《Spring》《SpringMVC》 &#x1f6f8;学无止境&#xff0c;不骄不躁&#xff0c;知行合一 文章目录 前言一、salt…

【JSON2WEB】04 amis低代码前端框架介绍

1 什么是 amis amis 是一个低代码前端框架&#xff0c;它使用 JSON 配置来生成页面&#xff0c;可以减少页面开发工作量&#xff0c;极大提升效率。 看到amis一句话的介绍&#xff0c;感觉就是JSON2WEB要找的前端框架。 amis是百度开源的框架&#xff0c;毕竟是大厂&#xff0c…

基于若依的ruoyi-nbcio流程管理系统基于form-generator的表单设计器增加子表单的一种简单方法(一)

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码&#xff1a; https://gitee.com/nbacheng/ruoyi-nbcio 演示地址&#xff1a;RuoYi-Nbcio后台管理系统 更多nbcio-boot功能请看演示系统 gitee源代码地址 后端代码&#xff1a; https://gitee.com/nbacheng/n…

社交媒体教育:Facebook在数字时代的社交学习

随着数字时代的到来&#xff0c;社交媒体已经深刻地改变了我们获取信息、进行交流的方式&#xff0c;同时也在教育领域崭露头角。作为全球最大的社交媒体平台之一&#xff0c;Facebook在数字时代发挥着越来越重要的社交学习作用。本文将深入探讨Facebook在教育领域的角色&#…

力扣细节题:二叉树前序遍历

细节一&#xff1a;题目在note部分提示我们要使用malloc函数去创建数组&#xff0c;因为它没有提供给我们数组&#xff0c;而题目中的指针returnsize提醒我们这是一个变量进行传址操作用于释放之前malloc的空间&#xff0c;粗暴地按题目范围malloc空间会报错&#xff0c;所以必…

端口扫描神器:御剑 保姆级教程(附链接)

一、介绍 御剑&#xff08;YooScan&#xff09;是一款网络安全工具&#xff0c;主要用于进行端口扫描。它具有直观的用户界面&#xff0c;方便用户进行端口扫描和信息收集。以下是御剑端口扫描工具的一些主要特点和功能&#xff1a; 图形用户界面&#xff1a; 御剑提供直观的图…

【漏洞复现】和为顺IP-COM WiFi未授权下载漏洞

Nx01 产品简介 深圳市和为顺网络技术有限公司是一家聚焦于商用级网络通信设备的研发与应用&#xff0c;为全球中小型企业提供高速、安全、易维护的网络设备产品和解决方案的公司。 Nx02 漏洞描述 深圳市和为顺网络技术有限公司IP-COM WiFi方案解决专家存在任意文件下载漏洞&am…

WebSocket基础详解

文章目录 前言由来简介优缺点适用场景兼容性 API介绍构造函数实例方法send()close() 实例属性ws.readyState&#xff08;只读&#xff09;ws.bufferedAmount&#xff08;只读&#xff09;ws.binaryTypeextensions&#xff08;只读&#xff09;protocol&#xff08;只读&#xf…