TL;DR
all()、any()は、イテラブル(繰り返し可能なオブジェクト)を一つだけ引数にとり、真理値(True / False)を返す組み込み関数である。
all() と any() のポイント
- all()は、引数のイテラブルが「すべての要素が True(真)である」というふうに判定されると True を返す
- any() は「真となる要素が一つでもあれば真を返す」働きをする。それ以外は False を返す
Python における真理値とは、ある命題が「真」か「偽」かを示す値である。Python で扱う真理値は、真と偽のみ。この値を扱うデータ型として bool 型が用意されている。True や False と書くだけで利用できる。
all()
all()は、引数のイテラブルが「すべての要素が True(真)である」というふうに判定されると True を返す。そして、一つでも False(偽) が存在する場合は、False を返す。
all([True, True, True])
# True
all([True, True, False])
# False
空文字を入れると、False になる。なぜなら、空文字は False だからである。
all(['a', 'b', ''])
# False
空文字は False なので、全て空文字にしても False を返す。
all(['', '', ''])
# False
空のタプルがあっても False を返す。
all(['a', 2, {}])
# False
None を混入させると False になる。
all(['a', 2, None])
# False
全ての要素に、None を入れると False を返す。
all([None, None, None])
# False
しかし、空のイテラブルは、全てが真となるために True を返すようだ。
all([])
# True
空文字のときに、入力漏れを出力する関数。
x = ['yamada', {'year' : 21}, '']
def func(i):
if all(i) == False:
return '入力漏れがあります'
func(x)
# 入力漏れがあります
any()
any() は「真となる要素が一つでもあれば真を返す」働きをする。それ以外は False を返す。
any([True, True, False])
# True
any([False, False, False])
# False
文字が一つでもあれば真となる。
any(['a', 'b', ''])
# True
全ての要素が空の場合は False を返す。
any(['', '', ''])
# False
None の場合は False を返す。
any([None, None, None])
# False