如何在Python 3.10结构化模式匹配中用列表作为多匹配条件
解决方案
你可以通过**模式守卫(Guard Clause)**来实现需求,Python的结构化模式匹配允许在case后添加if条件判断,既能复用已定义的列表,又能保持代码的可读性。
修正后的代码如下:
direct_payments = ["creditcard", "debitcard"] on_credits = ["gift card", "rewards program"] def print_payment_type(payment_type): match payment_type: case _ if payment_type in direct_payments: print("You paid directly!") case _ if payment_type in on_credits: print("You paid on credits!") print_payment_type("gift card")
说明
_是Python模式匹配中的通配符,用来匹配任意值,配合后面的if条件,就能实现“判断当前值是否在目标列表中”的逻辑。- 这种写法既保留了列表在其他代码场景中的复用性,又沿用了你偏好的结构化模式匹配语法,完全满足需求。
内容的提问来源于stack exchange,提问作者Ruben
相关产品推荐
相关产品推荐

