Pythonのall関数を用いてリストの要素がすべて空文字列か判定する

Python

この記事は最終更新日から1年以上が経過しています。

はじめに

開発中にPythonで「リストの要素がすべて空文字列か」という判定をしたい場面があり、なにかないかと調べてみたら、allという組み込み関数で簡単に実装できました。
今回はそのall、対になるanyを紹介します。

all

リストやタプルのような、iterableオブジェクトの要素がすべて真のときにTrueを返す関数。
Pythonでの真は、数値は0以外、文字列は空文字列(“”)以外、
タプルは空のタプル()以外、リストは空のリスト[]以外、ディクショナリは空のディクショナリ{}以外など。
公式ドキュメントにも、書いてありますが、以下のコードと同じ。

any

iterableオブジェクトの要素が一つでも真のときにTrueを返す関数。
同じく公式ドキュメントにも、書いてありますが、以下のコードと同じ。

どんな風に使ったか

「リストの要素がすべて空文字列か」の判定するために、リスト内包表記と合わせて使いました。

リスト内包表記部分は、各値の空文字列との比較結果を返しているので、
[x == '' for x in l] => [True, True, True]となっています。
これを使えば、「リストの要素がすべて正の数か」の判定が以下のように書けたり

anyを使って、「リストの要素が一つでも正の数か」の判定が以下のように書けます。

まとめ

all関数が論理積で、any関数が論理和という感じです。
うまく関数を使うとすっきり書けたりしますね。
ちなみにRubyやC#にも同じようなのがあります。

Python