龙空技术网

python最新语法match匹配模式题目

SuperOps 413

前言:

如今兄弟们对“python 字符串 匹配”大约比较讲究,我们都需要知道一些“python 字符串 匹配”的相关资讯。那么小编在网上搜集了一些关于“python 字符串 匹配””的相关知识,希望咱们能喜欢,大家一起来学习一下吧!

题目说明

题目如图,运行环境python3.10

A)  This list has TWO itemsB) 5 5C) Something elseD) 9 7E) None of the abpve
答案是 E. 以上都不对。

实际输出是:

This list has TWO items!9 7
题目解说

这个问题涉及到 Python 3.10 中引入的模式匹配特性。脚本使用 match 语句来匹配所提供的序列中的模式。

函数 matcher​ 接受一个名为 sequence​ 的参数。在函数内部,两个变量 a​ 和 b​ 被初始化为值 5​。

match​ 语句用于匹配 sequence​ 和不同的模式。模式按照定义的顺序进行检查。

当使用 matcher([9, 7])​ 调用函数时,序列 [9, 7]​ 会与模式进行匹配。

第一个模式检查序列是否为空列表。由于 [9, 7]​ 不是空的,所以这个模式被跳过。

第二个模式检查序列是否只有一个项,并将这个项赋值给变量 a​。由于序列有两个项,所以这个模式也被跳过。

第三个模式检查序列是否有两个项,并将这两个项分别赋值给变量 a​ 和 b​。这个模式匹配了,所以相应的代码块被执行。此代码块内的打印语句输出了"This list has TWO items!"。

Python 中模式匹配的行为允许绑定名称。在第三个模式中,变量 a​ 和 b​ 被绑定到分别对应的值 9​ 和 7​。这就是为什么后续的打印语句输出了 9 7​。

第四个模式是通配符模式,表示匹配任何没有匹配前面模式的序列。然而,由于我们的序列已经匹配了第三个模式,这个代码块不会被执行。

总结起来,输出 "这个列表有两个项!" 是因为序列 [9, 7]​ 匹配了第三个模式。然后,值 9​ 和 7​ 被绑定到变量 a​ 和 b​,并在下一条语句中打印出来。

python3.10 match语法回顾

当谈到 Python 3.10 的新特性时,match 语法无疑是一个备受关注的亮点。match 语法为开发者提供了一种简单而强大的模式匹配方式,使代码编写更加简洁、易读。下面我们将介绍 match 语法的各种用法,并附带代码示例,帮助你更好地理解和应用这一新特性。

基本模式匹配:

匹配常量模式:使用常量值进行匹配。

match value:    case 1:        # 执行匹配到常量值为1的代码    case 2:        # 执行匹配到常量值为2的代码    case _:        # 执行其他情况的代码
匹配变量模式:使用变量进行匹配,并将匹配结果绑定到变量。
match value:    case 'apple':        # 执行匹配到值为'apple'的代码    case fruit:        # 执行匹配到其他变量值的代码,并使用变量名进行引用
匹配类型模式:使用类型进行匹配,可以是内置类型或自定义类型。
match value:    case int:        # 执行匹配到整数类型的代码    case str:        # 执行匹配到字符串类型的代码    case Point(x, y):        # 执行匹配到自定义类型 Point 的代码,并提取 x 和 y 坐标
使用 or 关键字进行模式组合,匹配任一模式即可。
match value:    case 1 or 2:        # 执行匹配到值为1或2的代码    case 'apple' or 'orange':        # 执行匹配到值为'apple'或'orange'的代码
使用 and 关键字进行模式组合,同时匹配多个模式。
match value:    case int and value > 0:        # 执行匹配到正整数的代码    case str and len(value) > 5:        # 执行匹配到长度大于5的字符串的代码
使用 as 关键字进行模式组合,同时绑定变量并进行匹配。
match value:    case Point(x as 0, y):        # 执行匹配到 x 值为0的 Point 类型的代码,并提取 y 坐标    case Point(x, y as 0):        # 执行匹配到 y 值为0的 Point 类型的代码,并提取 x 坐标
在模式匹配中添加额外的条件判断。
match value:    case int and value > 0 if condition:        # 执行匹配到满足条件的正整数的代码    case str and len(value) > 5 if condition:        # 执行匹配到满足条件的长度大于5的字符串的代码
列表模式匹配:匹配列表中元素的模式
match value:    case [1, 2, 3]:        # 执行匹配到列表为 [1, 2, 3] 的代码    case [1, x, 3]:        # 执行匹配到列表中间元素为 x 的代码    case [1, *_]:        # 执行匹配到以1开头的列表的代码,并忽略后续元素
元组模式匹配:匹配元组中的模式。
match value:    case (1, 2):        # 执行匹配到元组为 (1, 2) 的代码    case(1, x):        # 执行匹配到元组第一个元素为1,第二个元素为 x 的代码    case (1, *_):        # 执行匹配到以1开头的元组的代码,并忽略后续元素
自定义类型模式匹配:匹配自定义类型的模式。
class Point:    def __init__(self, x, y):        self.x = x        self.y = ymatch value:    case Point(0, 0):        # 执行匹配到坐标为 (0, 0) 的 Point 类型的代码    case Point(x, y):        # 执行匹配到任意坐标的 Point 类型的代码,并提取 x 和 y 坐标
内置类型模式匹配:匹配内置类型的模式。
match value:    case int as num:        # 执行匹配到整数类型的代码,并将值绑定到 num 变量    case str as text:        # 执行匹配到字符串类型的代码,并将值绑定到 text 变量

这些示例覆盖了 match 语法的基本用法和一些常见的模式匹配技巧。通过灵活运用这些特性,你可以简化代码,并提高代码的可读性和可维护性。记得在实际应用中结合具体场景和需求,发挥 match 语法的优势。

了解更多python实用技巧,可以进入我的技术专栏了解更多python有用的知识点

标签: #python 字符串 匹配 #python编程比赛题目