Python中如何判断if语句内or连接的多个子条件哪一个成立
Python 多or条件判断获取触发条件的实现方案
以下两种方案均无需显式编写for循环即可实现需求:
方案1:内置next()函数(全Python3版本兼容)
该方案逻辑与or的短路执行特性完全一致,优先返回第一个匹配成功的子条件对应的值,代码简洁易维护,适合子条件逻辑统一的场景:
my_list = ['A','B','C'] # 按or判断的顺序存放待匹配的目标值 check_targets = ['S', 'T', 'C'] # 生成器迭代匹配,无匹配结果时返回None matched_val = next((item for item in check_targets if item in my_list), None) if matched_val is not None: # 输出:yes,匹配成功的条件对应值为 C print(f'yes,匹配成功的条件对应值为 {matched_val}')
方案2:海象运算符(Python3.8及以上版本支持)
适合子条件逻辑不同、无法统一迭代的场景,可在判断时直接存储每个子条件的执行结果:
my_list = ['A','B','C'] if ( (is_S_exist := 'S' in my_list) or (is_T_exist := 'T' in my_list) or (is_C_exist := 'C' in my_list) ): if is_S_exist: matched_val = 'S' elif is_T_exist: matched_val = 'T' else: matched_val = 'C' # 输出:yes,匹配成功的条件对应值为 C print(f'yes,匹配成功的条件对应值为 {matched_val}')
注:原示例中变量名
my语义模糊易冲突,建议修改为my_list这类表意清晰的命名。
内容的提问来源于stack exchange,提问作者user15649753
相关产品推荐
相关产品推荐

