Python中能否将两个in判断语句合并实现简写?
合并多个in判断的实现方案
你尝试的if (5 and 17) in n:无法达到预期,是因为Python中的and是逻辑运算符,而非自然语义中的并列关系。运算时5属于真值,因此5 and 17会直接返回第二个真值17,整个判断等价于仅判断17 in n,自然无法满足同时校验两个元素存在的需求。
以下是两种常用的可行实现:
- 方案1:使用
all()内置函数,扩展性强,后续需要新增判断元素时只需在元组中追加即可:
n = [5, 3, 17] # 所有待校验元素都在n中存在时才返回True if all(item in n for item in (5, 17)): print("YES")
如果是需要判断多个元素任意一个存在,可以将all()替换为any()。
- 方案2:使用集合的子集判断,写法更简洁,且集合查找的时间复杂度为O(1),在
n数据量较大时性能更优:
n = [5, 3, 17] if {5, 17}.issubset(n): print("YES")
如果仅需要判断2个元素,原始的if 5 in n and 17 in n:写法可读性更高,不需要为了简写而牺牲可维护性。
内容的提问来源于stack exchange,提问作者KosmoKamikaze
相关产品推荐
相关产品推荐

