1. ホーム
  2. python

[解決済み] セットが空の場合、ブール値を返す

2022-09-24 15:56:59

質問

関数の最後で、セットが空の場合にブール値を返す、よりクリーンな方法を見つけるのに苦労しています。

私は2つの集合の交差を取り、その集合が空だった場合に True または False のどちらを使うかは、 結果の集合が空かどうかで決まります。

def myfunc(a,b):
    c = a.intersection(b)
    #...return boolean here

最初に考えたのは

return c is not None

しかし、私のインタプリタでは、このステートメントが c = set([])

>>> c = set([])
>>> c is not None
True

以下も全て試しました。

>>> c == None
False
>>> c == False
False
>>> c is None
False

今、私はドキュメントを読んで、私が使用できるのは and , or そして not を空のセットで使ってブール値を推論しています。今のところ、私が思いつく唯一のものは、not not cを返すことです。

>>> not not c
False
>>> not c
True

私はこれを行うには、より多くのpythonic方法があるような気がしますが、私はそれを見つけるのに苦労しています。私は値を必要としないので、if文に実際のセットを返したくない、私はちょうどそれらが交差しているかどうかを知りたい。

どのように解決するのですか?

def myfunc(a,b):
    c = a.intersection(b)
    return bool(c)

bool() と同じようなことをします。 not not と同じようなことをしますが、より理想的で明確です。