Fumiのブログ

「全て真である」と「いずれか真である」のアルゴリズム | 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関数を使うのが無難だけどね。