如何实现子串便捷匹配 简化多目标匹配布尔表达式写法
子串匹配布尔表达式简化方案
下面分两种场景给出对应简化写法,均和原表达式name1 in a_string or name2 in a_string逻辑完全等价,且自带短路判断逻辑,性能无损耗:
场景1:待匹配项为字符串字面量(如"name1"、"name2")
- 固定少量匹配项写法:
any(s in a_string for s in ("name1", "name2"))
- 匹配项名称有统一规则、序号可枚举的精简写法:
any(f"name{i}" in a_string for i in (1,2))
- 序号连续的场景可以进一步简化:
any(f"name{i}" in a_string for i in range(1, 3))
场景2:待匹配项为已定义的变量(如name1、name2是提前赋值的变量)
- 直接传入变量元组的通用写法:
any(x in a_string for x in (name1, name2))
- 变量名有规则的动态取值写法(仅推荐简单场景使用,避免降低代码可读性):
any(locals()[f"name{i}"] in a_string for i in (1,2))
内容的提问来源于stack exchange,提问作者cerebrou
相关产品推荐
相关产品推荐

