在 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颗葡萄')
若有错误,敬请批评指正