【发布时间】:2014-02-07 02:23:49
【问题描述】:
如果我的集合在函数结束时为空,我正在努力寻找一种更简洁的方法来返回布尔值
我取两个集合的交集,想根据结果集合是否为空返回True 或False。
def myfunc(a,b):
c = a.intersection(b)
#...return boolean here
我最初的想法是做
return c is not None
但是,在我的解释器中,我可以很容易地看到,如果 c = set([]),该语句将返回 true
>>> c = set([])
>>> c is not None
True
我还尝试了以下所有方法:
>>> c == None
False
>>> c == False
False
>>> c is None
False
现在我从文档中了解到,我只能将 and、or 和 not 与空集一起使用来推断布尔值。到目前为止,我唯一能想到的就是返回而不是 c
>>> not not c
False
>>> not c
True
我觉得有一种更 Pythonic 的方法可以做到这一点,因为我正在努力寻找它。我不想将实际集合返回到 if 语句,因为我不需要这些值,我只想知道它们是否相交。
【问题讨论】:
-
空集被认为是布尔值 False 如果你这样转换它:
bool(set([])) -
顺便说一句,这个问题做得非常好,非常了不起。
-
@JonasWielicki 谢谢!欣赏答案 - 知道它是这样的。
-
这个问题要5年了,没有人建议使用
isdisjoint。我完全震惊了。
标签: python python-2.7