Pythonでリストに要素を含むか検索する2つの方法!

PythonPython

Pythonのリストに格納した要素が含まれているか確認する方法について書いています。
載せているコードはPythonのバージョン3.10.7で確認しました。

inキーワードを使う

inキーワードを使うことで、含んでいるか確認することができます。
例えば、下記のように使うことができます。

fruits = ['apple', 'banana', 'lemon']

result = 'lemon' in fruits
print(result) # True

最初にfruitsリストを作成しています。入れている要素は3つです。

次の処理で、inキーワードを使っています。
in左側が検索したい要素で、右側が検索元になるリストです。
検索した結果、要素があればTrue、要素がなければFalseが返ってきます。

今回はfruitsリストに「lemon」が入っているか検索しています。
検索した結果、要素があるのでresult変数にはTrueが格納されます。
最後にprint関数で出力していますが、Trueが出力されることが確認できました。

要素がリストに含まれていないことを確認したい

反対に要素がリストに含まれていないことを確認したいときには、not inキーワードを使うことができます。
例えば、下記のように使うことが可能です。

fruits = ['apple', 'banana', 'lemon']

result = 'apple' not in fruits
print(result) # False

最初にfruitsリストを作成しています、内容は先ほどと同じです。

次の処理で、not inキーワードを使っています。
inと同様に、左側が含まれていないか検索したい要素で、右側がリストになります。

検索した結果は、inと同様にTrueとFalseが返ってきます。
not inキーワードでは、要素が含まれていなかったときにTrueになります。

今回はfruitsリストに「apple」があるか確認していて、要素が存在するのでFalseが返ってきます。

indexメソッドを使って確認する

作成したリストからindexメソッドを呼び出して使うことで、指定した要素の要素番号を返してくれます。
この要素番号が返ってくるかどうかで、確認することができます。

例えば、下記のように使うことができます。

fruits = ['apple', 'banana', 'lemon']
result = fruits.index('apple')

print(result) # 0

最初にfruitsリストを作成しています。
その次の処理で、fruitsリストからindexメソッドを呼び出しています。

indexメソッドに渡しているのは、探したい要素です。
要素があった場合に、見つかった位置の最初の要素番号が返ってきます。

今回はfruitsリストから「apple」を探しています。
要素があるので、要素番号の「0」が返ってきます。

要素番号が返ってきたので、fruitsリストには「apple」を含んでいるということになります。

要素がない場合は?

リストからindexメソッドを使ったときに、要素がない場合にはエラーになります。
下記のようなエラーが出力されます。(fruitsリストから「apple123」を検索した場合のエラーです)

ValueError: 'apple123' is not in list

リストに入っていないという内容のエラーが出力されました。

エラーでプログラムが止まることを回避したい場合には、例外処理を書いてエラーをキャッチしましょう。
例えば、下記のように書くことができます。

searchFruit = 'cherry'
try:
  fruits = ['apple', 'banana', 'lemon']
  result = fruits.index(searchFruit)
  print(result)
except ValueError:
  print(f'{searchFruit}を含まない')

最初にsearchFruit変数に「cherry」を格納しました。

次に処理ブロックをtry exceptで囲んでいます。
fruits配列を作って、indexメソッドでsearchFruit変数(‘cherry’)を探しますが、ないのでValueErrorになります。

ValueErrorの例外が発生したら、exceptでキャッチして、print関数で文字列を出力して終わっています。
このプログラムを実行すると、「cherryを含まない」を出力して処理が終了します。

このようにエラーの場合の処理を書いて回避することも可能です。

探す位置を指定する

indexメソッドにリストから探す位置を指定することができます。
例えば、下記のようにして検索位置を指定します。

fruits = ['apple', 'banana', 'lemon', 'apple', 'peach', 'grape']
result1 = fruits.index('apple')
print(result1) # 0

result2 = fruits.index('apple', 1)
print(result2) # 3

result3 = fruits.index('apple', 4, 5)
print(result3) # ValueError

最初にfruitsリストを6つの要素を格納して作りました。

その次の行からindexメソッドを使っています。
変数のresult1には、「apple」を渡した結果の要素番号を格納しています。
最初の要素が返ってくるので、「0」になります。

次のresult2変数にも要素番号を格納しています。
ここでは、indexメソッドの第1引数に「apple」と第2引数に「1」を渡しています。
第2引数に渡した値は検索の開始位置です。
今回は「banana」の箇所から調べ始めるので、2回目に「apple」がでてくる「3」が返ってきます。

最後のresult3変数にも、同様にして要素番号を格納しています。
indexメソッドの第1引数が「apple」、第2引数が「4」で第3引数が「5」です。
第2引数は開始位置ですが、第3引数は終了位置です。
今回は4番目(peach)から開始して、次の5番目(grape)までになるので、「apple」が存在せずにエラーになります。

引数と返り値

indexメソッドの引数と返り値についてまとめます。

引数

引数は下記の通りです。

引数説明
第1引数必須の引数。検索文字列です。
第2引数検索開始位置です。
第3引数検索終了位置です。

返り値

要素があった場合には、リストの要素番号が返ってきます。
要素番号は「0」から要素を数えた番号が返ってきます。

要素がなかった場合にはValueErrorになります。

おわりに

今回はPythonでリストに要素を含むか確認する方法について書きました。
inキーワードとindexメソッドを使いました。

単純にリストに含んでいるか確認したい場合には、inキーワードを使うと良いかと思います。
要素番号を取得して、処理したいときにindexメソッドを使うようにしましょう。

コメント

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