【Python】複数条件(and・or)のif文をスマートに実装する

Pythonで複数条件のif文を実装する時に「and」「or」を使います。
ただ複数の条件をand演算子やor演算子で繋いでいくとif文が長くなり読み難くなってしまいます。

そのような時にはPythonの組み込み関数であるall関数やany関数を使うとスマートに実装できます!

これらの関数を使うことにより、if文を「and」「or」で繋ぐ必要がなくなりますのでif文が短くなり読みやすくなります。

この記事では「all関数やany関数を使って複数条件のif文をスマートに実装する方法」を説明します。参考になりましたら幸いです。

Pythonで複数条件のif文をスマートに実装する方法

以下のようにif文のand演算子をall関数に置き換えることができます。

A = True
B = True
C = True
D = True
E = True
F = True
G = True
H = True
I = True
J = True

if A and B and C and D and E and F and G and H and I and J:
    print('全部Trueである')


# all関数に置き換え
if all([A, B, C, D, E, F, G, H, I, J]):
    print('全部Trueである')

かなりスマートじゃないでしょうか?

all関数は引数のすべての要素がTrueならTrue、それ以外はFalseを返します。
ので、if文で使うとand演算子と同じ役割をしてくれます。

all関数の詳細
https://docs.python.org/ja/3/library/functions.html#all


また、or演算子もany関数に置き換えることができます。

A = True
B = False
C = False
D = False
E = False
F = False
G = False
H = False
I = False
J = False

if A or B or C or D or E or F or G or H or I or J:
    print('いずれかがTrueである')


# any関数に置き換え
if any([A, B, C, D, E, F, G, H, I, J]):
    print('いずれかがTrueである')

こちらもかなりスマートなりました!

or関数は引数のいずれかの要素がTrueならTrue、それ以外はFalseを返します。
ので、if文で使うとor演算子と同じ役割をしてくれます。

any関数の詳細
https://docs.python.org/ja/3/library/functions.html#any

なお、notと組み合わせることにより、すべての要素がFalseか判定することができます。

A = False
B = False
C = False
D = False
E = False
F = False
G = False
H = False
I = False
J = False

if not any([A, B, C, D, E, F, G, H, I, J]):
    print('全部Falseである')

andとorの組み合わせ

以下のように「and」「or」の組み合わせもall関数やany関数に置き換えることができます。

A = True
B = True
C = False

if A and (B or C):
    print('AがTrue、かつBかCのどちらかがTrueである')


# and関数、any関数に置き換え
if all([A, any([B, C])]):
    print('AがTrue、かつBかCのどちらかがTrueである')

まとめ

今回紹介した関数を1つのif文にまとめました。

A = True
B = True
C = False

if all([A, B, C])
    print('全部Trueである')
elif any([A, B, C])
    print('いずれかがTrueである')
elif not any([A, B, C])
    print('全部Falseである')

以上がall関数やany関数を使って複数条件のif文をスマートに実装する方法でした。

タイトルとURLをコピーしました