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 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.mfbz.cn/a/376360.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Leetcode刷题-(11~15)-Java+Python+JavaScript

算法是程序员的基本功,也是各个大厂必考察的重点,让我们一起坚持写算法题吧 遇事不决,可问春风,春风不语,即是本心。 我们在我们能力范围内,做好我们该做的事,然后相信一切都事最好的安排就可…

更新至2022年,2008-2022年按行业分城镇单位就业人员相关指标数据(20个指标)

更新至2022年,2008-2022年按行业分城镇单位就业人员相关指标数据 1、时间:2008-2022年 2、来源:统计年鉴、国家统计J、各省年鉴 3、指标:2008-2022年城镇单位就业人员(万人)、2008-2022年农林牧渔业城镇单位就业人员(万人)、制…

idea中git提交代码出现:commit and push checks failed

参考:https://blog.csdn.net/qq_46548855/article/details/126506747

ThinkPHP 中使用Redis

环境.env [app] app_debug "1" app_trace ""[database] database "" hostname "127.0.0.1" hostport "" password "" prefix "ls_" username ""[redis] hostname "127.0.0.1…

浅谈交换原理(3)——交换网络

一、基本概念 交换网络是由若干个交换单元按照一定的拓扑结构和控制方式构成的网络。交换网络的三个基本要素是:交换单元、不同交换单元间的拓扑连接和控制方式。 1.1 单机交换网络与多级交换网络 交换网络按拓扑连接方式可分为:单级交换网络和多级交换网…

第三篇:跨平台QT开发-正则表达式和文件处理

正则表达式 正则表达式即一个文本匹配字符串的一种模式,Qt 中 QRegExp 类实现使用正则表达式 进行模式匹配,且完全支持 Unicode,主要应用:字符串验证、搜索、查找替换、分割。 正则表达式中字符及字符集 元素含义 c 匹配字符本…

mac电脑快捷指令实现拼图

mac访达,搜索输入‘快捷指令’,找到‘快捷指令’, 点击快捷指令,进入快捷指令中心,搜索‘拼图’ ,选中‘照片拼图’, 点击‘添加快捷指令’, 在‘所有快捷键指令’中可以看到添加的快…

C++ || 模板初阶 | 函数模板 | 类模板

泛型编程 泛型编程,编写与类型无关的通用代码,是代码复用的一种手段。模板是泛型编程的基础。 可以理解为活字印刷术类似的方式。 函数模板 函数模板概念 函数模板,代表一个函数家族,该函数模板与类型无关,在使用…

Python调用matlab程序

matlab官网:https://ww2.mathworks.cn/?s_tidgn_logo matlab外部语言和库接口,包括 Python、Java、C、C、.NET 和 Web 服务。 matlab和python的版本 安装依赖配置 安装matlab的engine 找到matlab的安装目录:“xxx\ extern\engines\python…

Linux的进程信号

注意:首先需要提醒一个事情,本节提及的进程信号和下节的信号量没有任何关系,请您区分对待。 1.信号概念 1.1.生活中的信号 我们在生活中通过体验现实,记忆了一些信号和对应的处理动作,这意味着信号有以下相关的特点&…

重生奇迹mu仙踪林npc

工匠尤达 NPC工匠尤达位于仙踪林的坐标为(87, 134),他可以给玩家制作装备和强化装备。 精灵安吉拉 NPC精灵安吉拉位于仙踪林的坐标为(29, 196),她可以给玩家提供补血、补魔服务,同时也能提供提高属性点数的服务。 仓库使者塞维特 NPC仓库…

SpringCloud-创建多模块项目

在微服务架构中,项目的组织结构对于代码的维护和团队的协作至关重要。Spring Cloud作为一个强大的微服务框架,提供了丰富的功能和组件,同时也支持多模块项目的创建,使得代码结构更加清晰、易于管理。本文将介绍如何使用 Spring Cl…

NModbus的NuGet包使用样例

首先仿真软件ModbusSlave简单配置3条数据: 连接配置: VS中安装NuGet包:NModbus4 简单获取湿度 SerialPort serialPort new SerialPort("COM1", 9600, Parity.None, 8, StopBits.One);serialPort.Open();Modbus.Device.ModbusSer…

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

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

第 123 场 LeetCode 双周赛题解

A 三角形类型 II 三条边能构成三角形的充要条件是任意一边都小于其余两边之和&#xff0c;枚举各边判断能否构成三角形&#xff0c;若能再判断是否存在边想等 class Solution { public:string triangleType(vector<int> &nums) {int s accumulate(nums.begin(), num…

工厂方法模式(Factory Method Pattern)

原文地址:https://jaune162.blog/design-pattern/factory-method-pattern/ 概述 工厂方法模式(Factory Method Pattern)是一个对象创建型模式。 定义一个用于创建对象的接口,让子类决定实例化哪一个类。 Factory Method使一个类的实例化延迟到其子类。 – 《设计模式:可复…

灵活应对:策略模式在软件设计中的应用

策略模式是一种行为型设计模式&#xff0c;它允许定义一系列算法&#xff0c;并将每个算法封装起来&#xff0c;使它们可以互换使用。策略模式让算法的变化独立于使用算法的客户端&#xff0c;使得在不修改原有代码的情况下切换或扩展新的算法成为可能。 使用策略模式的场景包…

《合成孔径雷达成像算法与实现》Figure6.9

clc clear close all参数设置 距离向参数设置 R_eta_c 20e3; % 景中心斜距 Tr 2.5e-6; % 发射脉冲时宽 Kr 20e12; % 距离向调频率 alpha_os_r 1.2; % 距离过采样率 Nrg 320; % 距离线采样数 距离向…

java 基础 (1)简介-程序基础-流程控制-数组操作

学习教程 java入门 JavaEE JavaSe JavaMe 简单来说&#xff0c;Java SE就是标准版&#xff0c;包含标准的JVM和标准库&#xff0c;而Java EE是企业版&#xff0c;它只是在Java SE的基础上加上了大量的API和库&#xff0c;以便方便开发Web应用、数据库、消息服务等&#xff0c;…

运维必会篇-主从复制

主从复制 概述 主从复制是指将主数据库的 DDL 和 DML 操作通过二进制日志传到从库服务器中&#xff0c;然后在从库上对这 些日志重新执行&#xff08;也叫重做&#xff09;&#xff0c;从而使得从库和主库的数据保持同步。 MySQL支持一台主库同时向多台从库进行复制&#xf…