【Python】in演算子でリスト(List)や文字列に値が存在するか確認する!

エンジニアに特化した転職エージェント!

・IT/Web系エンジニアの経験者の方
・どこの転職エージェントを利用しようか迷っている方

それなら、キッカケエージェントにご相談!

キッカケエージェントでは、少数精鋭のエージェントが、エンジニアの経験やスキル、志向性などをカウンセリングし、的確なアドバイスを提供します!

また、徹底した企業へのヒアリングにより、最適なマッチングを実現し、今では内定率が一般的なエージェントの2倍以上となっています!

転職エージェントに迷っている方、まずは無料でキャリア相談から!




(この記事は2024年04月03日に投稿されました。)

Pythonでリスト(List)や文字列の値を確認するにはin演算子使用します。

in演算子とは、オブジェクトに特定の値が存在するどうかを確認/判定する演算子になります。

そのため、リスト(List)や文字列に対して使用すると特定の要素や文字が存在するか確認することができます。

そして、in演算子は存在する場合はTrueを、存在しない場合はFalseを返すため、条件処理の際に利用すると便利です。

また、Pythonにはリスト(List)や文字列の値を確認する関数がいくつかありますが、値が確認できなかった場合に処理が落ちてしまう関数も存在します。

それに比べてinはTrueかFalseのどちらかを返す便利な演算子であるためもし、リスト(List)や文字列内に値があるか確認したい場合はin演算子を使用するようにしましょう。

今回はPythonのin演算子でリスト(List)や文字列に値が存在するか確認する方法について紹介していきます。

この記事はこんな方におすすめ

リスト(List)に指定した要素が格納されているかどうか調べたい場合

文字列に指定した文字が存在するかどうか調べたい場合

in演算子とは

in演算子とは、オブジェクトに特定の値が存在するどうかを確認/判定することができる演算子になります。

特定の値が存在する場合はTrueを、存在しない場合はFalseを返します。

in演算子の処理イメージ

in演算子の書き方

in演算子の書き方は下記のようになります。

特定の値の後ろにinと追記し、その後ろにオブジェクトを追記することで使用することができます。

in演算子の返り値

in演算子の返り値はTrueかFalseの真偽値となります。

in演算子でリスト(List)や文字列に値が存在するか判定するサンプルコード

in演算子でリスト(List)や文字列に値が存在するか判定するサンプルコードをご紹介します。

ここでは下記の2パターンに対して使用します。

  1. リスト(List)の場合
  2. 文字列の場合

リスト(List)の場合

リスト(List)に対してin演算子を使用します。

リスト(List)の場合は指定した値が要素として存在するかどうかを確認し、存在する場合は「True」を、存在しない場合は「False」を返します。

● main.py

実行結果

in演算子でリスト(List)に値が存在するか確認した結果

in演算子でリスト(List)に値が存在するか確認しています。

Pythonはリスト内に存在するため、Trueが表示されています。

また、「VBA」はリスト内に存在しないため、Falseが表示されています。

文字列の場合

in演算子を文字列に対して使用します。

文字列の場合は指定した値が文字として存在するかどうかを確認し、存在する場合は「True」を、存在しない場合は「False」を返します。

● main.py

実行結果

in演算子で文字列に値が存在するか確認した結果

in演算子で文字列に値が存在するか確認しています。

「Python」は文字列内に存在するため「True」が表示されています。

また、「Java」は文字列内に存在しないため、「False」が表示されています。

in演算子でリスト(List)や文字列に複数の値が存在するか確認する場合

in演算子でリスト(List)や文字列に複数の値が存在するか確認するには、繰り返し処理を使用します。

確認したい値をリストの要素に格納し、それらに対して繰り返し処理を行うことで複数の値の存在を確認することができます。

● main.py

実行結果

in演算子でリスト(List)に複数の値が存在するか確認した結果

繰り返し処理とin演算子でリストに複数の値が存在するか確認しています。

そのため、下記のような結果が表示されています。

  1. 「JavaScript」はリスト(List)に存在するため「True」
  2. 「Swift」はリスト(List)に存在しないため「False」
  3. 「C」はリスト(List)に存在しないため「False」

● main.py

実行結果

in演算子で文字列に複数の値が存在するか確認した結果

繰り返し処理とin演算子で文字列に複数の値が存在するか確認しています。

そのため、下記のような結果が表示されています。

  1. 「Python」は文字列に存在するため「True」
  2. 「あたい」は文字列に存在しないため「False」
  3. 「in」は文字列に存在するため「True」

論理演算子を使用してin演算子でリスト(List)や文字列に値が存在するか確認する場合

in演算子は他の論理演算子組み合わせることで、様々な条件としてリスト(List)や文字列に値が存在するかを確認することができます。

そのため、ここでは下記の論理演算子とin演算子を組みあわせた方法についてご紹介します。

  1. and演算子(論理和)
  2. or演算(論理積)
  3. not演算子(否定)

and演算子(論理和)

まずは、and演算子と組みあわせて使用します。

and演算子とは、すべて真なら真でそれ以外は偽と判断する演算子となります。

そのためin演算子と組み合わせると、複数の値が全て含まれる場合のみ「True」が返され、それ以外は「False」が返されます。

● main.py

実行結果

and演算子を使用してin演算子でリスト(List)に値が存在するか確認した結果

and演算子でリスト(List)に値が存在するか確認しています。

「JavaScript」と「Java」はどちらもリスト内に存在するため「True」が表示されています。

また、「JavaScript」はリスト内に存在しますが、「Swift」はリスト内に存在しないため、「False」が表示されています。

● main.py

実行結果

and演算子を使用してin演算子で文字列に値が存在するか確認した結果

and演算子で文字列に値が存在するか確認しています。

「Python」と「確認」はどちらも文字列内に存在するため「True」が表示されています。

また、「Python」はリスト内に存在しますが、「かくにん」は文字列内に存在しないため、「False」が表示されています。

or演算(論理積)

2つ目はor演算子と組みあわせて使用します。

or演算子とは、どれか1つでも真であるなら真、それ以外は偽と判断する演算子となります。

そのためin演算子と組み合わせると、指定した値のうちどれか1つでも存在していると「True」を返し、それ以外は「False」を返すようになります。

● main.py

実行結果

or演算子を使用してin演算子でリスト(List)に値が存在するか確認した結果

or演算子でリスト(List)に値が存在するか確認しています。

「C」はリスト(List)内に存在しませんが、「JavaScript」はリスト内に存在するため「TRUE」が表示されています。

また、「Perl」と「Swift」はリスト(List)内に存在しないため「FALSE」が表示されています。

● main.py

実行結果

or演算子を使用してin演算子で文字列に値が存在するか確認した結果

or演算子で文字列に複数の値が存在するか確認しています。

「かくにん」は文字列内に含まれていませんが、「Python」は文字列内に含まれているため「True」が表示されています。

また、「パイソン」と「かくにん」は文字列内に含まれていないため、「False」が表示されています。

not演算子(否定)

3つ目はnot演算子と組みあわせて使用します。

notとはinの否定型の演算子になります。

そのためin演算子と組み合わせると、リスト(List)や文字列に値が存在しない場合は「Ture」を、存在する場合は「False」を返します。

● main.py

実行結果

not演算子を使用してin演算子でリスト(List)に値が存在するか確認した結果

not inでリスト(List)に値が存在しないか確認しています。

「Python」はリストに存在するため「False」を、「VBA」はリストに存在しないため「True」が表示されています。

● main.py

実行結果

not演算子を使用してin演算子で文字列に値が存在するか確認した結果

not inで文字列に値が存在しないか確認しています。

「Python」は文字列に存在するため「False」を、「VBA」は文字列に存在しないため「True」が表示されています。

in演算子を使用する際の注意点

先ほどまでin演算子を使用してきましたが、注意すべき点が複数あります。

そのため、ここではin演算子を使用する際の注意点についてご紹介します。

リスト(List)同士は完全一致である

まず、1つ目はリスト(List)同士は完全一致であるということです。

in演算子の特定の値とオブジェクトがどちらともリスト(List)である場合、要素単位ではなくリスト自体でを値の存在を確認します。

そのため、リストの要素数と格納位置が一致しない限り、存在しないと判断されます。

● main.py

実行結果

in演算子でリスト(List)の値をリスト単位で確認した結果

「JavaScript」と「PHP」はリスト内に存在しますが、「[‘JavaSccript’, ‘PHP’]」という要素は存在しないため、Falseが表示されています。

そのため、もしin演算子をリスト同士で使用する場合は多次元リストに対して使用するようにしましょう。

大文字/小文字は区別される

2つ目は大文字/小文字は区別されるということです。

文字列やリストに対してin演算子を使用する場合、大文字と小文字の文字や要素は違う値と認識します。

そのため、「ANT」と「ant」いう値は違う値となり、存在しない値として認識されるようになります。

● main.py

実行結果

in演算子で大文字の値を小文字で確認した結果

「Python」と「python」は同じ文字ですが、大文字と小文字の違いで存在しないと認識され、「False」が表示されています。

もし、大文字と小文字を区別したくない場合は処理を行う前にlower()やupper()などで文字列を大文字か小文字に統一しましょう。

in演算子を使用した実際のケース

in演算子を使用した実際のケースについてご紹介します。

例えば、in演算子を使用してユーザ名とパスワードを確認するようなコードを作成します。

● index.html

● result.html

● main.py

実行結果(登録成功時)

in演算子を使用してユーザ名とパスワードを確認した結果(登録成功)

実行結果(登録失敗時)

in演算子を使用してユーザ名とパスワードを確認した結果(登録失敗-1)

実行結果(登録失敗時)

in演算子を使用してユーザ名とパスワードを確認した結果(登録失敗-2)

in演算子で入力した文字列を確認しています。

今回は下記のような処理を行い、その中でin演算子を使用しています。

  1. requestで入力したユーザー名とパスワードを受け取る。
  2. 受け取ったユーザー名が既に登録されていないかin演算子で確認。
  3. (登録されている場合は3の処理を、登録されていない場合は4の処理を行う。)

  4. 登録できないというエラーメッセージを表示する。
  5. 受け取ったパスワードに必須の記号が含まれてるかin演算子で確認。
  6. (含まれていない場合は5の処理を、含まれている場合は6の処理を行う。)

  7. 登録できないというエラーメッセージを表示する。
  8. 登録完了というメッセージを表示する。

そのため、登録ができたパターンとできなかったパターンがそれぞれ表示されています。

リスト(List)や文字列に値が存在するか確認する他の方法

Pythonではリスト(List)や文字列に値が存在するかどうか確認する方法がin演算子以外にも存在します。

そのため、ここでは値が存在するかどうかを判定する他の方法についてご紹介します。

find()

find()とは、指定した値が文字列の何番に存在するか確認することができる関数になります。

見つけたときは左から数えた番号を、見つからなかった場合は「-1」を返します。

● main.py

実行結果

find()で指定した値が文字列に存在するか確認した結果

find()で指定した値が文字列に存在するか確認しています。

そのため、下記のような結果が表示されています。

  1. 「演算子」は文字列内の10番目に存在するため「9」
  2. 「python」は文字列内に存在しないため「-1」

set()

set()とは集合型のイテレータに変換することができる関数になります。

そのため、リストをset型に変換し、部分集合や上位集合の計算を行うことでリスト(List)に値が存在するか確認することがきます。

● main.py

実行結果

set()で指定した値がリスト(List)に存在するか確認した結果

set()で指定した値がリスト(List)に存在するか確認しています。

今回は部分集合の処理を行ったため、下記のような結果が表示されています。

  1. 「JavaScript」はリスト(List)の中に存在するため「True」
  2. 「C」はリスト(List)に存在しないため「False」

index()

index()とは、指定した値がオブジェクトの何番目に格納されているか確認することができる関数になります。

見つけたときは左から数えた要素のインデックスを返し、見つからなかった場合はエラーになります。

こちらの関数はリストと文字列のどちらでも使用することができます。

● main.py

実行結果

index()で指定した値がリスト(List)や文字列に存在するか確認した結果

index()で指定した値がオブジェクトに存在するか確認しています。

そのため、下記のような結果が表示されています。

  1. 「Java」はリスト(List)の5番目に存在するため「4」
  2. 「Python」は文字列の1番目存在するため「0」

もし、index()について詳しく知りたい場合は下記の記事をご参考ください。

まとめ

● in演算子とはオブジェクトに値が存在するかどうかを判定する演算子である。

● リスト(List)に対してin演算子を使用すると、指定した値が要素として存在するかどうかを確認する。
(存在する場合は「True」を、存在しない場合は「False」を返す。)

● 文字列に対してin演算子を使用すると、指定した値が文字として存在するかどうかを確認する。
(存在する場合は「True」を、存在しない場合は「False」を返す。)

● in演算子でリスト(List)や文字列に複数の値が存在するか確認するには繰り返し処理を使用する。

● in演算子は下記のような論理演算子と組みわわせてを使用することができる。
・and演算子
(指定した値が全て存在する場合にTrueを返し、それ以外はFalseを返す。)
・or演算子
(指定した複数の値がどれか1つでも存在する場合にTrueを返し、それ以外はFalseを返す。)
・not演算子
(指定した値が存在しない場合にTrueを返し、それ以外はFalseを返す。)

● in演算子を使用する際の注意点として下記の2点がある
・リスト(List)同士の比較は完全一致である
・大文字/小文字は区別される

● in演算子以外にも下記の関数でリスト(List)や文字列に値が存在するか判定することができる。
・find()
(文字列から指定した文字を検索する関数)
・index()
(リストや文字列から指定した文字を検索する関数)
・set()
(イテレータを集合型に変換する関数)