2019年7月4日

Python で none of

Python とはやや縁遠い世界ですが、C++ の標準 C++11 では、以下の3つの関数が標準に追加されました。
  • bool std::all_of()
  • bool std::any_of()
  • bool std::none_of()

1つ目は Python で言うとビルトイン関数の all()、2つ目は Pythonで言うとビルトイン関数の any() にそれぞれ対応します。
3つ目の std::none_of() に関しては、Python には対応するビルトイン関数はありません。そこで、std::none_of() 相当の関数を作ってみたいと思います。

std::none_of() 相当の関数は、実は極簡単に作ることができます。any() の否定を返すだけで OK です。

def noneof(iterable):
    return not any(iterable)

>>> noneof([0, 1, 0])
False
>>> noneof([0, 0, 0])
True
>>> noneof(i % 2 == 0 for i in [1, 2, 3])
False
>>> noneof(i % 2 == 0 for i in [1, 3, 5])
True
いざ作るとすごく簡単なので、そもそも noneof() という関数が用意されなかったのかもしれませんね。

0 件のコメント:

コメントを投稿