Python 3.X中多列表比对:如何判断列表是否匹配多个候选列表之一
原代码错误原因
你编写的判断语句不符合预期,核心是Python的or运算符逻辑规则导致的:array == ["x","2","3"] or ["1","x","3"] or ["1","2","x"]不会判断array是否等于三个列表中的任意一个,实际运算逻辑如下:
- 首先计算
array == ["x","2","3"]的结果,结果为真则整个表达式返回真 - 如果上述结果为假,会直接判断
["1","x","3"]的布尔值,非空列表的布尔值恒为真,因此整个表达式永远返回真,和array的实际取值无关。
正确实现方案
方案一:补全完整相等判断
在每个or两侧都编写完整的相等判断逻辑:
array = ["x","x","x"] if array == ["x","2","3"] or array == ["1","x","3"] or array == ["1","2","x"]: print("hello")
方案二:用成员运算简化代码
将所有待匹配的列表存入一个容器,用in关键字判断array是否在容器内,代码更易维护:
array = ["x","x","x"] match_list = (["x","2","3"], ["1","x","3"], ["1","2","x"]) if array in match_list: print("hello")
待匹配的选项越多,该方案的简洁性优势越明显,后续调整匹配规则只需要修改match_list即可。
内容的提问来源于stack exchange,提问作者Paul-Jose Sinclair
相关产品推荐
相关产品推荐

