Python中实现结构化模式匹配与同步迭代详解

        在 Python 中,模式匹配(Pattern Matching) 是一种强大的功能,用于根据数据的结构或内容进行匹配和处理。Python 3.10 引入了 match 语句,使得模式匹配更加直观和灵活。模式匹配可以用于处理复杂的数据结构,如列表、字典、类实例等。

模式匹配的基本用法

"""
match 数据:
    case 模式1:
        # 匹配模式1时执行的代码
    case 模式2:
        # 匹配模式2时执行的代码
    case _:
        # 默认情况,匹配任意模式

# 数据:需要匹配的对象
# 模式:描述数据的结构或内容
# _:通配符,匹配任意结构

"""

结构的模式匹配 

date=eval(input('请输入要匹配的数据:'))
match date:
    case {'name':'迪迦','age':10086}:
        print('字典')
    case (1,2,4):
        print('元组')
    case [1,2,4]:
        print('序列')
    case _:
        print('相当于多重if中的else')
# 请输入要匹配的数据:'helloworld'
# 相当于多重if中的else
# 请输入要匹配的数据:helloworld
# NameError: name 'helloworld' is not defined

输出结果:

请输入要匹配的数据:{'name':'迪迦','age':10086}
字典

同步迭代|zip()+match

       同步迭代 是指在 Python 中同时遍历多个可迭代对象(如列表、元组、字符串等),并在每次迭代中处理这些对象的对应元素。同步迭代通常用于处理多个相关数据集,例如将两个列表中的元素一一对应进行操作。

         zip() 是 Python 中实现同步迭代的常用工具。它可以将多个可迭代对象“压缩”成一个迭代器,生成由对应元素组成的元组。

        因为集合是无序的,因此每次输出的结果可能不同。

fruits={'pear','apple','orange','grape'} # 集合是无序的
counts={1,34,56,7}
for f,c in zip(fruits,counts):
    match f,c:
        case 'apple',34:
            print('34个苹果')
        case 'pear','56':
            print('56个梨')
        case 'orange',7:
            print('7个橙子')
        case 'pear','1':
            print('1颗葡萄')

若有错误,敬请批评指正 

作者:Plips

物联沃分享整理
物联沃-IOTWORD物联网 » Python中实现结构化模式匹配与同步迭代详解

发表回复