ここではイテラブルの真理値判定につかわれるallとanyについて述べます。
all
allはすべてイテラブルの要素がすべてTrueのときにTrueを返します。どれか一つでもFalseのときにはFalseをかえします。イテラブルの長さが0の時はTrueをかえします。
例えば以下のようなリストの場合どうなるでしょうか。
l = [1, 2, 3, 4, 5, 6, 7, 8, 9]
print(all(l))
真理値判定するとTrueになります。
True
0を含むとどうなるでしょうか。
l = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
print(all(l))
実行結果
False
リストの中に0を含むとFalseを返しました。数字の真理値判定は原点からの距離が0のときFalseとなりそれ以外はTrueをかえすためです。詳しくは以前の記事「真理値判定」を見てください。
イテラブルの長さが0の場合どうなるでしょうか。
l = []
print(all(l))
実行結果
True
この実行結果は直感と反するため注意してください。all()はイテラブルの長さが0のときにはTrueを返します。
イテラブルの中に長さ0のイテラブルが入っている場合どうなるでしょうか。
l = [[]]
print(all(l))
実行結果
False
今度はFalseが返っていました。長さ0のイテラブルの真理値判定はFalseのため、Falseが返ってきます。
allはイテラブルの長さが0だとTrueをかえしますが、イテラブルの中に長さ0のイテラブルがあった場合Falseをかえすため注意してください。これは長さが0のイテラブルの真理値判定がFalseのためです。直感と反しますがallの仕様がそうなっている以上仕方がありません。
以下のように空の文字列あった場合はどうなるでしょうか。
l = ["東京","埼玉","","大阪"]
print(all(l))
実行結果
False
文字列もイテラブルであり空文字列は長さが0なので真理値判定がFalseになり結果としてallはFalseをかえします。
any
anyはイテラブルの要素のどれか一つがTrueであればTrueを返します、すべてFalseの場合にFalseを返します。
いずれかがTrueの場合。
l = [0,1,0]
print(any(l))
実行結果
True
すべてFalseの場合
l = [0,0,0]
print(any(l))
実行結果
False
長さ0のイテラブルをanyで判定した場合
l = []
print(any(l))
実行結果
False
まとめ
all()メソッドとany()メソッドについて述べました。
allメソッドとanyメソッドは長さ0のイテラブルが与えられたときの振る舞いに違いがあるため注意してください。allとanyは真理値判定をしっかりと理解しておかないと、直感と異なる動きに戸惑う事があります。真理値判定についてはしっかりと理解しましょう。
この記事へのコメント
コメントはまだありません。
コメントを送る