如何检查数组中是否存在与指定值相等的元素以简化冗长if条件判断
写法正误与适配说明
你第一种写法
if(Span1 == colorArray) or (Span2 == colorArray) or (Span3 == colorArray):无法实现需求==是全等判断,单个字符串变量永远不可能和列表对象相等,这个条件永远返回False。你第二种写法
if (Span1 in colorArray) and (Span2 in colorArray) and (Span3 in colorArray):语法本身是有效的,但需要对应你的实际需求:
- 如果你需要判断Span1、Span2、Span3三个变量都属于gray/blue/purple这三个颜色,这个写法完全可用
- 如果你要匹配最开始你写的冗长代码的逻辑(只校验Span1和Span2都在三个颜色范围内,不管Span3),把多余的判断删掉即可:
colorArray = ["gray","blue","purple"] # 完全等价你最开始的长判断逻辑 if Span1 in colorArray and Span2 in colorArray: doThis() else: doSomethingElse()
优化建议
如果判断逻辑执行次数较多,你可以把列表换成集合,in操作的查询效率更高:
# 集合的in操作时间复杂度为O(1),列表为O(n),元素越多优势越明显 color_set = {"gray", "blue", "purple"} if Span1 in color_set and Span2 in color_set: doThis()
内容的提问来源于stack exchange,提问作者stinkiepinkie
相关产品推荐
相关产品推荐

