「全て真である」と「いずれか真である」のアルゴリズム | Pythonドキュメント備忘録
# はじめに
Pythonドキュメント備忘録とは、私がPythonのドキュメントを読んで、ちょっと残しておきたいと思ったものを抜粋して備忘録としてます。
# 「全て真である」と「いずれか真である」のアルゴリズム
組み込み関数のページを読んでて、 all関数とany関数と同等の式が紹介されてます。
def all(iterable): for element in iterable: if not element: return False return True
そうか、全て真か調べるには、途中で真ではないのがいないか調べればいいのか。
def any(iterable): for element in iterable: if element: return True return False
そうか、いずれかが真か調べるには、途中で真がいるか調べればいいのか。 なんか、言われtら当たり前なのだけど...
ちなみに、いつもandのような関数を作るときは、論理積を使って次のように書いてた。
def all(iterable): result = True for element in iterable: result &= element return result
ちなみに、いつもanyのような関数を作るときは、論理和を使って次のように書いてた。
def all(iterable): result = False for element in iterable: result |= element return result
まぁ、if文を実行するのは時間がかかるからっと思って書いたコードだけど、 自分が今まで書いてたコードは、ぱっと見た時に何やってるかわかりにくいし、 必ずイテレータが終了するまでfor文を回さないといけないから、 どっちがいいかは微妙だけどね。
まぁ、Pythonでは自分で組まずにall関数やany関数を使うのが無難だけどね。