Pythonのif文では、inを利用して文字列、リスト(配列)やタプルなどに特定の値が含まれているかを判定することができます。この記事では、if文でinを利用した様々な判定方法を確認していきます。
in以外のif文全般に関するトピックは、次の記事をご参照ください。
>> 図解!Python if文の徹底解説
発売数10,000万本突破を記念して、今だけ期間限定で87%オフの大セール中!
if文 inによるリスト(配列)に特定の値が含まれるかの判定
まずリスト(配列)やタプルなどに特定の値が含まれているかを判定する方法を見ていきます。
inを用いたif文の記述は以下になります。
Trueの時(含まれている時)に実行する処理
それではif文でinを利用した例を確認していきます。
変数xの値がリスト[1,2,3,4]に含まれる場合、「Trueです。」と表示します。(含まれない場合、何も表示しません。)xに4を代入し実行すると、リストに4は含まれますので、「Trueです。」と表示されます。
1 2 3 | x = 4 if x in [1,2,4,5]: print("Trueです。") |
次にxに3を代入し実行すると、3はリストに含まれませんので、何も表示されませんでした。
1 2 3 | x = 3 if x in [1,2,4,5]: print("Trueです。") |
今度は、else文を用いて、リストに値が含まれない場合、「Falseです。」と表示してみましょう。次のようにelse文を追加し、変数xに6を代入し、実行します。
1 2 3 4 5 | x = 6 if x in [1,2,4,5]: print("Trueです。") else: print("Falseです。") |
すると、6はリストに含まれませんので、「Falseです。」と表示されました。
if文 inによるrangeで作成されたリスト(配列)に特定の値が含まれるかの判定
inで利用するリスト(配列)は、rangeで作成されたものでも利用することができます。rangeは、連続した数値が含まれるリストを作成する場合に利用します。
rangeに対しては、開始値、終了値、増減量を引数として渡してあげると、その法則に則った数値を含むリストを自動的に作成してくれます。
開始値、増減量は省略することも可能です。その場合は、開始値は0、増減量は1とみなされます。また終了値はその数値は含まれません。
rangeの例もいくつか確認していきましょう。
変数iの値がrange(1, 4)に含まれる場合、「Trueです。」と表示し、含まれない場合、「Falseです。」と表示します。iに3を代入し実行すると、range(1, 4)で作成されたリスト[1, 2, 3]に3は含まれますので、「Trueです。」と表示されます。
1 2 3 4 5 | i = 3 if i in range(1, 4): print("Trueです。") else: print("Falseです。") |
次にiに4を代入し実行すると、range(1, 4)で作成されたリスト[1, 2, 3]に4は含まれませんので、「Falseです。」と表示されます。
1 2 3 4 5 | i = 4 if i in range(1, 4): print("Trueです。") else: print("Falseです。") |
発売数10,000万本突破を記念して、今だけ期間限定で87%オフの大セール中!
if文 inによる辞書のキーに特定の値が含まれるかの判定
inではリスト(配列)やタプル以外に辞書を用いて、辞書のキーに特定の値が含まれるか否かの判定を行うことができます。
Trueの時(含まれている時)に実行する処理
辞書に対して値を追加していく際、既にキーに存在する場合は追加せず、存在しない場合は値を追加するなどの判定に利用すると便利です。
それでは辞書の例も確認していきます。
まず次のようなコードと名前がペアになった辞書{"C01":"Tanaka", "C02":"Sasaki", "C03":"Yamamoto"}を定義し、変数nmdictに格納します。変数xの値が辞書nmdictのキーに含まれる場合、「Trueです。」と表示します。含まれない場合、「False」と表示します。
xに”C01”を代入し実行すると、辞書のキーに”C01”は含まれますので、「Trueです。」と表示されます。
1 2 3 4 5 6 | x = "C01" nmdict = {"C01":"Tanaka", "C02":"Sasaki", "C03":"Yamamoto"} if x in nmdict: print("Trueです。") else: print("Falseです。") |
次に、xに”C04”を代入し実行すると、辞書のキーに”C04”は含まれませんので、「Falseです。」と表示されます。
1 2 3 4 5 6 | x = "C04" nmdict = {"C01":"Tanaka", "C02":"Sasaki", "C03":"Yamamoto"} if x in nmdict: print("Trueです。") else: print("Falseです。") |
今度は、xに”Tanaka”を代入し実行するとどうなるでしょうか?
1 2 3 4 5 6 | x = "Tanaka" nmdict = {"C01":"Tanaka", "C02":"Sasaki", "C03":"Yamamoto"} if x in nmdict: print("Trueです。") else: print("Falseです。") |
”Tanaka”は辞書の値には含まれますが、辞書のキーには含まれませんので、「Falseです。」と表示されます。
注意ポイント
あくまでも、判定は辞書のキーに対して行われます。
if文 inでnotによるリスト(配列)に特定の値が含まれていないことの判定
またif文において、特定の値が含まれていないことを判定するには、論理演算子notを用いて次のように記述します。
Trueの時(含まれていない時)に実行する処理
例を確認しましょう。
変数xの値がリスト[1,2,3,4]に含まれない場合、「Trueです。」と表示します。また、含まれる場合、「Falseです。」と表示します。先ほどの例とは逆になっています。
次のように変数xに3を代入し、実行します。
1 2 3 4 5 | x = 3 if x not in [1,2,4,5]: print("Trueです。") else: print("Falseです。") |
すると、3はリストに含まれませんので、「Trueです。」と表示されました。
今度は、変数xに4を代入し、実行します。
1 2 3 4 5 | x = 4 if x not in [1,2,4,5]: print("Trueです。") else: print("Falseです。") |
すると、4はリストに含まれますので、「Falseです。」と表示されました。
発売数10,000万本突破を記念して、今だけ期間限定で87%オフの大セール中!
if文 inでand/orによる複数条件に指定方法
if文で条件がいくつかある場合、論理演算子のandやorを利用して、複数の条件を記述できます。それはif文でinを利用している場合も同様です。
論理演算子andを用いたif文の記述は以下になり、これらの条件式1、2には、inを用いた文を含めることができます。
条件式1、条件式2がともにTrueの時に実行する処理
また論理演算子orを用いたif文の記述は以下になります。
条件式1、条件式2のいずれかがTrueの時に実行する処理
まずは論理演算子andを利用した例から確認していきましょう。
次のようなリスト[1,2,4,5]を定義し、変数mylistに格納します。
andを利用して、変数i、jの値がともにリストmylistに含まれる場合、「Trueです。」と表示します。含まれない場合、「False」と表示します。
iに4を、jに6を代入し実行すると、
1 2 3 4 5 6 7 | i = 4 j = 6 mylist = [1,2,4,5] if i in mylist and j in mylist: print("Trueです。") else: print("Falseです。") |
4はリストに含まれますが、6は含まれませんので、「Falseです。」と表示されます。
今度はiに4を、jに5を代入し実行すると、
1 2 3 4 5 6 7 | i = 4 j = 5 mylist = [1,2,4,5] if i in mylist and j in mylist: print("Trueです。") else: print("Falseです。") |
4、5ともにリストに含まれますので、「Trueです。」と表示されました。
次に論理演算子orの例も確認します。
先ほどと同様にリスト[1,2,4,5]を定義し、変数mylistに格納します。
今度はorを利用して、変数i、jの値のいずれかがリストmylistに含まれる場合、「Trueです。」と表示します。両方とも含まれない場合、「False」と表示します。
iに4を、jに6を代入し実行すると、
1 2 3 4 5 6 7 | i = 4 j = 6 mylist = [1,2,4,5] if i in mylist or j in mylist: print("Trueです。") else: print("Falseです。") |
4はリストに含まれますが、6は含まれません。しかし今度はorを利用しており、いずれかの条件が満たされればOKですので、「Trueです。」と表示されました。
今度はiに3を、jに6を代入し実行すると、
1 2 3 4 5 6 7 | i = 3 j = 6 mylist = [1,2,4,5] if i in mylist or j in mylist: print("Trueです。") else: print("Falseです。") |
3、6ともにリストに含まれませんので、「Falseです。」と表示されました。
if文 inによる文字列に特定の値が含まれるかの判定
Pythonのif文では、inを利用して文字列に特定の文字が含まれているかを判定することができます。記述方法は次のようになります。
Trueの時(含まれている時)に実行する処理
それでは例を確認していきます。
変数xの文字が文字列"shimizu"に含まれる場合、「含まれます。」と表示します。また、含まれない場合、「含まれません。」と表示します。
xに”sh”を代入し実行すると、
1 2 3 4 5 | x = “sh” if x in "shimizu": print("含まれます。") else: print("含まれません。") |
文字列"shimizu"に”sh”は含まれますので、「含まれます。」と表示されます。
次に変数xに”im”を代入し実行すると、
1 2 3 4 5 | x = “im” if x in "shimizu": print("含まれます。") else: print("含まれません。") |
”im”も"shimizu"に含まれますので、「含まれます。」と表示されます。このように文字列の途中に含まれていてもOKです。
最後にxに”ih”を代入し実行すると、
1 2 3 4 5 | x = “ih” if x in "shimizu": print("含まれます。") else: print("含まれません。") |
”ih”は含まれませんので、「含まれません。」と表示されます。
関連記事です。
Pythonのif文全般のトピックについては、こちらに纏めた記事がございます。
Pythonに関する重要なトピック全般について学んでいきたいと考えておられる方には、次のリンクをお勧めします。