Day 67簡単な線形探索を実装する
Pythonコード
1def linear_search(arr, target):2 for i in range(len(arr)):3 if arr[i] == target:4 return i5 return -16 7data = [1, 2, 3, 4, 5]8target = 39result = linear_search(data, target)10if result != -1:11 print(f"{target}はインデックス{result}にあります")12else:13 print(f"{target}は見つかりませんでした")
解説
- 行1〜5: linear_search関数を定義します。この関数は、リストarrの中からtargetという値を探します。forループを使って、リストの各要素を一つずつチェックします。len()関数は、リストの要素の数を返します。range()関数は、0からlen(arr)-1までの数字のリストを作ります。targetが見つかった場合は、そのインデックスを返します。見つからなかった場合は、-1を返します。
- 行7〜8: リストdataとtargetの値を定義します。dataは探索対象のリストで、targetは探索する値です。
- 行9〜13: linear_search関数を呼び出し、結果を変数resultに格納します。resultの値に応じて、targetが見つかったかどうかを出力します。print()関数は、画面に文字や値を表示する関数です。
次に試してみよう
- リストの中に複数の同じ値がある場合、linear_search関数は最初に見つけたインデックスを返します。すべてのインデックスを返すように関数を修正してみましょう。
- linear_search関数を使用して、ユーザーから入力された値をリストの中で探してみましょう。input()関数とtry/except文を使用して、入力ミスを処理します。
- リストの中の値を昇順に並べ替えるsort()関数を使用して、探索を高速化してみましょう。