如何在Python中同时将两个列表作为if条件进行判断?
如何简洁优雅地在if条件中同时判断两个Python列表是否非空?
在Python里,非空列表在布尔判断场景中会被视为True,空列表则对应False。要同时判断两个列表是否非空,最简洁优雅的写法是直接用**逻辑与运算符and**连接两个列表:
a = [1,2,34] b = [4,5,6,3] if a and b: print("两个列表都非空") print("working ")
你之前的写法无效的原因:
if a & b:&是位运算符,并非逻辑与,它会尝试对列表执行位运算,这在Python中是不支持的,会直接抛出错误。if (a is True) & (b == True):列表本身不是布尔值True,只是在if这类布尔上下文里会被隐式转换为布尔值,所以这种比较逻辑完全不成立。len(a) >=1的写法虽然可行,但完全没必要——直接用列表本身作为判断条件更符合Python的"鸭子类型"设计风格,代码更简洁易读。
另外,and还支持短路求值:如果第一个列表是空的,会直接返回False,不会再去判断第二个列表,在性能上也更高效。
内容的提问来源于stack exchange,提问作者krishna
相关产品推荐
相关产品推荐

