Python的模式匹配

python:匹配对象 阅读详情

python的模式匹配

当我们使用if...elif...else时,面对较多条件就会出现if...elif...elif...elif...elif...elif...else会写很长的一段代码,导致我们代码的可读性变差。

即针对若干种情况我们可以使用match语句(类似于C语言的switch多分支语句)。

例如我们用学生成绩来展示,一个学生的成绩只能是A、B、C、D:

score = 'A'
if score == 'A':
    print('score is A.')
elif score == 'B':
    print('score is B.')
elif score == 'C':
    print('score is C.')
else:
    print('invalid score.')

如果用match语句改写,则改写如下:

score = 'A'

match score:
    case 'A':
        print('score is A.')
    case 'B':
        print('score is B.')
    case 'C':
        print('score is C.')
    case _: # _表示匹配到其他任何情况
        print('score input error.')

使用match语句时,程序会依次使用case匹配,并且在最后可以使用一个“_”来表示任意值。

复杂匹配

match语句除了可以匹配单个的值外,还可以匹配多个值和匹配一定范围,并且把匹配后的值绑定到变量:

age = 15

match age:
    case x if x < 10:
        print(f'< 10 years old: {x}')
    case 10:
        print('10 years old.')
    case 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18:
        print('11~18 years old.')
    case 19:
        print('19 years old.')
    case _:
        print('not sure.')

示例中第一个case x if x < 10表示当age < 10成立时匹配,且赋值给变量x,第二个case 10仅匹配单个值,第三个case 11|12|...|18能匹配多个值,用|分隔。

匹配列表

match语句还可以匹配列表,功能非常强大。

我们假设用户输入了一个命令,用args = ['gcc', 'hello.c']存储,下面的代码演示了如何用match匹配来解析这个列表:

args = ['gcc', 'hello.c', 'world.c']
# args = ['clean']
# args = ['gcc']

match args:
    # 如果仅出现gcc,报错:
    case ['gcc']:
        print('gcc: missing source file(s).')
    # 出现gcc,且至少指定了一个文件:
    case ['gcc', file1, *files]:
        print('gcc compile: ' + file1 + ', ' + ', '.join(files))
    # 仅出现clean:
    case ['clean']:
        print('clean')
    case _:
        print('invalid command.')

第一个case ['gcc']表示列表仅有'gcc'一个字符串,没有指定文件名,报错;

第二个case ['gcc', file1, *files]表示列表第一个字符串是'gcc',第二个字符串绑定到变量file1,后面的任意个字符串绑定到*files(它表示至少指定一个文件)

第三个case ['clean']表示列表仅有'clean'一个字符串;

最后一个case _表示其他所有情况。

Python怎么实现模式匹配 总的来说,模式匹配在文本处理、数据挖掘、编译器和语言处理、图像处理、生物信息学、自然语言处理、网络安全等领域都有广泛的应用。使用适当的模式匹配方法能够提高代码的可读性、可维护性,并加速处理复杂任务。 阅读详情

相关推荐

【Python进阶】5个Python结构化模式匹配技巧,你get到了吗?

结构化模式匹配(Structural Pattern Matching)是一种在代码中匹配和解构复杂数据结构的机制。它类似于其他语言中的“switch”语句,但功能更强大,可以处理更复杂的数据结构。通过今天的分享,相信小伙伴们已经掌握了5个Python结构化模式匹配的高级技巧。无论是基本模式匹配、列表和元组模式匹配、字典模式匹配、类模式匹配,还是复合模式匹配,都能帮助你在Python编程中更加高效地处理复杂数据结构。如果你还有其他关于Python结构化模式匹配的问题,欢迎在评论区留言交流哦!

java专栏 738

Python 常用匹配

【代码】Python 常用匹配。

星云 1931

保姆级教程:用Kvaser DB Editor从零创建你的第一个DBC文件(附CAN信号属性详解)

本文提供了一份详细的Kvaser DB Editor教程,指导用户从零开始创建DBC文件,并深入解析CAN信号属性的关键设置。通过步骤清晰的安装指南、信号属性配置详解和实用技巧,帮助工程师和学生快速掌握CAN总线通信的核心工具,提升工作效率。

weixin_27076351的博客 250

Python 中的结构模式匹配

截至 2021 年初,我们无法在低于或等于 3.9 的已发布 Python 版本中使用 match 关键字。那时,我们习惯于使用字典或嵌套的 if/elif/else 语句来模拟。但是,Python 3.10 引入了一个新特性,称为结构模式匹配(语句)。它相当于我们在 Java、C++ 和许多其他编程语言中使用的语句。这一新功能使我们能够编写简单、易于阅读且最不容易出错的流程控制语句。

迹忆客 932

【论文精度】生成式预训练模型——BART(Bidirectional and Auto-Regressive Transformers)

​ BART是一个预训练的seq2seq的去噪自编码(denoising autoencoder)模型,BART以下方式进行训练①用任意的噪声函数(noising function)去破坏文本;②学习一个模型来重建原始文本。它使用一个标准的基于transformer的神经机器翻译架构,可以看作是BERT(双向编码器)、GPT(left-to-right解码器)以及其他预训练方案的推广。

weixin_45828972的博客 7450

AI 编程助手新玩法:用 Claude Code 一键调用国产大模型(DeepSeek/Kimi/GLM 对比)

本文深入评测了Claude Code与三大国产大模型(DeepSeek、Kimi、智谱GLM)的集成效果,详细对比了它们在代码生成质量、响应速度和特殊场景支持度等方面的差异。通过实测数据和实战技巧,帮助开发者选择最适合的AI编程助手组合,提升开发效率。

weixin_30955617的博客 487

Python字符串匹配----6种方法的使用

1. re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none。 import re line="this hdr-biz 123 model server 456" pattern=r"123" matchObj = re.match( pattern, line) 2. re.search 扫描整个字符串并返回第一个成功的匹配...

qq_34500270的博客 16万+

基于Simulink的占空比调制DTC降低转矩脉动

修改传统SVPWM模块,输入占空比d和有效矢量索引,计算Ton​=d∗Tc​、Toff​=(1−d)∗Tc​,生成对称PWM波形(替代开关表直接输出)。:低速时(n<500rpm)减小dmax​=0.6(避免磁链畸变),高速时(n>2000rpm)增大dmax​=0.8(提升动态响应);kT​/kψ​:转矩/磁链误差增益(需整定,如kT​=0.02/(N⋅m),kψ​=0.1/Wb);(θ为电压矢量与磁链夹角)。② SVM-DTC(占空比计算模块启用,d0​=0.5,kT​=0.02,kψ​=0.1)。

amy_mhd的博客 87

python模式匹配算法_模式匹配方法总结及实现

一. 模式匹配简介:模式匹配 ——> 寻找待匹配图像和全体图像中最相似的部分,常用于物体检测任务。虽然现在使用卷积神经网络做物体检测任务有更好的效果,但是模式匹配是最基本的物体检测方法,它很基础,很重要。二. 模式匹配算法:原图像为 I(H X W),待匹配图像为 T(h X w)。1. 对于图像 I:,for j in range(H-h):for i in range(W-w) 。在...

weixin_39839968的博客 1425

假期搞定!2026国社科申报AI全攻略指南:从选题到创新,7大核心要点手把手教你!

最后给大家推荐的400多所高校教师都在用的AI平台——高级学术版专业应用平台,集成了国际主流学术应用,以及ChatGPT、Claude、Gemini、Grok等Al大模型的高级版本平台,还有,可以辅助大家高效完成科研和学术写作任务,当然撰写硕博论文,课题、职称论文、国社科、国自然基金本子也是手拿把掐。你的任务是:用高度凝练的方式说明在(某一明确国家战略 / 政策方向,如:中国式现代化、共同富裕、基层治理现代化、数字中国、文化强国、国家安全等)背景下,我究竟要研究一个什么“具体而可操作的问题”。

智能AI让学术科研更容易 624

华为od 面试八股文_数据库_01_含答案

华为od 面试八股文_数据库_01_含答案

MISAYAONE的博客 2166

Python 高级教程之结构化模式匹配

Python崛起并且风靡,因为优点多、应用领域广、被大牛们认可。学习 Python 门槛很低,但它的晋级路线很多,通过它你能进入机器学习、数据挖掘、大数据,CS等更加高级的领域。Python可以做网络应用,可以做科学计算,数据分析,可以做网络爬虫,可以做机器学习、自然语言处理、可以写游戏、可以做桌面应用…Python可以做的很多,你需要学好基础,再选择明确的方向。这里给大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

2401_84138927的博客 436

AI 测试工程师 — 6 个月学习计划表

AI 转型测试工程师 —— 6 个月学习计划表

weixin_46453070的博客 1068

python中模式匹配

的强大之处在于它可以解构复杂的数据结构,如列表、元组、字典等。是匹配的模式,可以是常量、变量、数据结构等。是一个通配符,表示匹配任何值(类似于。

m0_61360701的博客 190

用MSBlock重塑C2f,让你的模型又轻又强(参数量与精度的双重突破)

打开确保模型解析器能识别MSBlock模块。通过将MSBlock集成到YOLOv8的C2f模块中,我们实现了一个“轻量且多尺度感知”的目标检测模型。这个改进不仅在工程上能降低部署成本、提升推理速度,更在科研上提供了“多尺度+动态核”的创新思路——这种思路可以延伸到其他网络(如ResNet、MobileNet)的改进中,帮你在论文中打造独特的研究点。如果你在实现过程中遇到问题,比如代码报错、训练收敛异常,可以先检查模块集成的每一步是否到位,再尝试调整MSBlock的卷积核尺寸、动态权重的计算方式等超参数。

m0_71589036的博客 105

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Python 3.10新特性——模式匹配介绍

Python 3.10新特性——模式匹配介绍

KLZZ66的博客 1643

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Python 中的模式匹配:深入了解 match 语句

在 Python 3.10 及更高版本中,match语句引入了一种强大的模式匹配功能,类似于其他语言中的switch语句,但功能更为丰富和灵活。本文将详细介绍match语句的语法、用法以及一些使用注意事项。

qq_25699299的博客 2109

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Python模式匹配开源项目推荐

Python模式匹配开源项目推荐 一、项目基础介绍 本项目是一个开源的Python模式匹配库,名为patterns,它为Python 2.7及以上版本以及PyPy提供了模式匹配功能。项目托管在GitHub上,可以通过以下链接访问:patterns。本项目主要使用Python编程语言开发。 二、项目的核心功能 patterns库的核心功能是提供类似于函数式编程语言中的模式匹配(pattern mat...

gitblog_00368的博客 290

python算法之单词模式匹配

单词模式匹配 首先给定两个字符串,一个是单词模式字符串,以恶是目标字符串。之后检查目标字符串是否为给定的单词模式,即求目标字符串中单词出现的规律是否符合单词模式字符串中的规律。 例如:单词模式字符串为“一二二一”,目标字符串为“苹果 香蕉 香蕉 苹果”,二者的规律一样,匹配成功。 首先建立哈希表来存储数据,由于不仅需要排除一个模式对应多个字符串的情况,还需要排除多个模式对应一个字符的情况,我们需要建立两个哈希表:hash和used。 hash用来存储模式字符串和目标字符串的对应关系,used记录目前已经使用

sjjsaaaa的博客 1372

Python 强大的模式匹配工具—Pampy

在自然语言处理界,模式匹配可以说是最常用的技术。甚至可以说,将NLP技术作为真实生产力的项目都少不了模式匹配。 什么是模式匹配呢?在计算机科学中,往往是检查给定的序列或字符串中是否有符合某种模式的片段。比如说:“啊,你的AK-47打得真准”,如果我们将 “啊,你的_____打得真准 ” 作为一种模式,则会将AK-47匹配出来。 实现模式匹配往往都是用正则表达式,但是如果你想识别特别复杂的模式,编写正则表达式就会变得非常非常麻烦。而Pampy这个项目能解决你不少的烦恼。 下面是一个使用例子: ..

z099164的博客 263

Python 强大的模式匹配

一些很 sb 的正则需求, 对子模式要求苛刻 不同情况的子模式顺序不同 这就要用到命名的子模式了

hldh214的博客 1418

Pampy:Python中的模式匹配利器

Pampy:Python中的模式匹配利器 1. 项目介绍 Pampy 是一个为 Python 提供模式匹配功能的开源项目。它的设计理念是让代码更加简洁、直观,使得开发者能够通过模式匹配来处理各种复杂的数据结构和条件。Pampy 非常小巧(仅150行代码),运行速度快,并能够提高代码的可读性。 2. 项目快速启动 首先,确保您的系统中已安装 Python。接下来,可以通过以下步骤安装 Pampy: ...

gitblog_00609的博客 431

Python基础——模式匹配

好了,终于还上学到这个模式匹配了。

Derrick__1的博客 233

python学习-march模式匹配

Python 3.11 引入了一个新特性,称为“结构化模式匹配”(Structured Pattern Matching),它受到了 Haskell 和 Rust 等语言中的模式匹配特性的启发。这个特性允许开发者使用更简洁和可读性更强的语法来处理不同的情况,类似于 switch-case 语句在其他语言中的作用。

Qhumaing的博客 569

Python match case结构化模式匹配

Python 在 3.10 之前没有提供类似 switch case 一样的分支语句,虽然也能用 if elif else 或者字典来实现同样的逻辑。到 3.10 版本终于提供了 match case 结构化模式匹配,该语法比 switch case 更加灵活和强大。 match 语句接受一个表达式并将其值与以一个或多个 case 语句块形式给出的一系列模式进行比较。和其他语言 switch case 语句很不同的一点是,match case 不用 break 进行退出,每个 case 是独立的逻辑。

龚建波 5313
上一篇: 计算BMI指数,并根据BMI指数输出结果:python条件判断
下一篇: Python的循环
Akzeptieren
博客等级 码龄8年 65粉丝 79原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值