Python List index() と例
リストは、さまざまなデータ型 (int、float、Boolean、string など) の項目を順番に格納するコンテナーです。 Python に組み込まれている重要なデータ構造です。データは角括弧 ([]) 内に記述され、値はカンマ (,) で区切られます。
リスト内の項目には、インデックス 0 から始まる最初の要素でインデックスが付けられます。新しい項目を追加するか、既存の項目を更新または削除することにより、作成されたリストを変更できます。また、重複するアイテムとネストされたリストを持つこともできます。
リストには多くのメソッドがあり、そのうち重要なものは index() です。
このチュートリアルでは、次のことを学びます:
- Python リスト index()
- for ループを使用してリスト内の要素のインデックスを取得する
- while ループと list.index() の使用
- リスト内包表記を使用してリスト内の要素のインデックスを取得する
- 列挙を使用してリスト内の要素のインデックスを取得する
- フィルターを使用してリスト内の要素のインデックスを取得する
- NumPy を使用してリスト内の要素のインデックスを取得する
- more_itertools.locate() を使用してリスト内の要素のインデックスを取得する
Python リスト index()
list index() メソッドは、指定された要素の最初の最小インデックスを見つけるのに役立ちます。リスト内に重複する要素がある場合、要素の最初のインデックスが返されます。これは、インデックスを取得する最も簡単で直接的な方法です。
組み込みのリスト index() メソッドのほかに、リスト内包表記、enumerate()、フィルター メソッドを使用して、リストをループするなど、他の方法を使用してインデックスを取得することもできます。
list index() メソッドは、指定された要素の最初の最小インデックスを返します。
構文
list.index(element, start, end)
パラメータ
パラメータ | 説明 |
---|---|
要素 | インデックスを取得する要素。 |
開始 | このパラメータはオプションです。 start:インデックスを定義して要素を検索できます。指定しない場合、デフォルト値は 0 です。 |
終わり | このパラメータはオプションです。検索する要素の終了インデックスを指定できます。指定されていない場合は、リストの最後まで考慮されます。 |
戻り値
list index() メソッドは、指定された要素のインデックスを返します。要素がリストに存在しない場合、index() メソッドはエラーをスローします。たとえば、ValueError:‘Element’ is not in the list.
例:指定された要素のインデックスを見つける。
リスト my_list =[‘A’, ‘B’, ‘C’, ‘D’, ‘E’, ‘F’] では、要素 C と F のインデックスを知りたいと考えています。
以下の例は、インデックスを取得する方法を示しています。
my_list = ['A', 'B', 'C', 'D', 'E', 'F'] print("The index of element C is ", my_list.index('C')) print("The index of element F is ", my_list.index('F'))
出力:
The index of element C is 2 The index of element F is 5
例:index() で start と end を使用する
この例では、開始インデックスと終了インデックスを使用して、リスト内のインデックスの検索を制限しようとします。
my_list = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J'] print("The index of element C is ", my_list.index('C', 1, 5)) print("The index of element F is ", my_list.index('F', 3, 7)) #using just the startindex print("The index of element D is ", my_list.index('D', 1))
出力:
The index of element C is 2 The index of element F is 5 The index of element D is 3
例:存在しない要素で index() メソッドをテストするには
存在しない要素のリストでインデックスを検索しようとすると、次のようなエラーが発生します:
my_list = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J'] print("The index of element C is ", my_list.index('Z'))
出力:
Traceback (most recent call last): File "display.py", line 3, in <module> print("The index of element C is ", my_list.index('Z')) ValueError: 'Z' is not in list
for ループを使用してリスト内の要素のインデックスを取得する
list.index() メソッドを使用すると、引数として渡される要素のインデックスが得られることがわかりました。
my_list =['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru'] . 「Guru」という名前はインデックスに 3 回存在し、「Guru」という名前のすべてのインデックスが必要です。
以下の例に示すように、for ループを使用すると、複数のインデックスを取得できるはずです。
my_list = ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru'] all_indexes = [] for i in range(0, len(my_list)) : if my_list[i] == 'Guru' : all_indexes.append(i) print("Originallist ", my_list) print("Indexes for element Guru : ", all_indexes)
出力:
Originallist ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru'] Indexes for element Guru : [0, 3, 6]
while-loop と list.index() の使用
while ループを使用すると、指定されたリストをループして、指定された要素のすべてのインデックスを取得します。
リスト:my_list =['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru'], 要素 'Guru' のすべてのインデックスが必要です.
以下の例は、while-loop を使用してすべてのインデックスを取得する方法を示しています
my_list = ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru'] result = [] elementindex = -1 while True: try: elementindex = my_list.index('Guru', elementindex+1) result.append(elementindex) except ValueError: break print("OriginalList is ", my_list) print("The index for element Guru is ", result)
出力:
OriginalList is ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru'] The index for element Guru is [0, 3, 6]
リスト内包表記を使用してリスト内の要素のインデックスを取得する
すべてのインデックスを取得するための迅速で簡単な方法は、リストでリスト内包表記を使用することです。
リスト内包表記は、新しいシーケンス (リスト、辞書など) を作成するために使用される Python 関数です。つまり、既に作成されているシーケンスを使用します。
より長いループを減らし、コードを読みやすく維持しやすくするのに役立ちます。
次の例は、その方法を示しています:
my_list = ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru'] print("Originallist ", my_list) all_indexes = [a for a in range(len(my_list)) if my_list[a] == 'Guru'] print("Indexes for element Guru : ", all_indexes)
出力:
Originallist ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru'] Indexes for element Guru : [0, 3, 6]
列挙を使用してリスト内の要素のインデックスを取得する
Enumerate() 関数は、Python で使用できる組み込み関数です。 enumerate を使用して、リスト内の要素のすべてのインデックスを取得できます。入力を反復可能なオブジェクト (つまり、ループできるオブジェクト) として受け取り、出力は各項目へのカウンターを持つオブジェクトです。
次の例は、リストで enumerate を使用して、特定の要素のすべてのインデックスを取得する方法を示しています。
my_list = ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru'] print("Originallist ", my_list) print("Indexes for element Guru : ", [i for i, e in enumerate(my_list) if e == 'Guru'])
出力:
Originallist ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru'] Indexes for element Guru : [0, 3, 6]
フィルタを使用してリスト内の要素のインデックスを取得する
filter() メソッドは、指定された関数に基づいて、指定されたリストをフィルタリングします。リストの各要素は関数に渡され、必要な要素は関数で指定された条件に基づいてフィルター処理されます。
filter() メソッドを使用して、リスト内の特定の要素のインデックスを取得しましょう。
次の例は、リストでフィルターを使用する方法を示しています。
my_list = ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru'] print("Originallist ", my_list) all_indexes = list(filter(lambda i: my_list[i] == 'Guru', range(len(my_list)))) print("Indexes for element Guru : ", all_indexes)
出力:
Originallist ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru'] Indexes for element Guru : [0, 3, 6]
NumPy を使用してリスト内の要素のインデックスを取得する
NumPy ライブラリは、特に配列に使用されます。したがって、ここでは NumPy を使用して、指定されたリストから必要な要素のインデックスを取得します。
NumPy を利用するには、インストールしてインポートする必要があります。
同じ手順は次のとおりです:
ステップ 1) NumPy をインストール
pip install numpy
ステップ 2) NumPy モジュールをインポートします。
import numpy as np
ステップ 3) np.array を利用してリストを配列に変換
my_list = ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru'] np_array = np.array(my_list)
ステップ 4) np.where() を使用して、必要な要素のインデックスを取得します
item_index = np.where(np_array == 'Guru')[0]
出力付きの最終的な作業コードは次のとおりです:
import numpy as np my_list = ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru'] np_array = np.array(my_list) item_index = np.where(np_array == 'Guru')[0] print("Originallist ", my_list) print("Indexes for element Guru :", item_index)
出力:
Originallist['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru'] Indexes for element Guru : [0 3 6]
more_itertools.locate() を使用してリスト内の要素のインデックスを取得する
more_itertools.locate() は、リスト内の要素のインデックスを見つけるのに役立ちます。このモジュールは、python バージョン 3.5 以降で動作します。パッケージ more_itertools 使用するには、最初にインストールする必要があります。
以下は、more_itertools をインストールして使用する手順です。
ステップ 1) pip (python パッケージ マネージャー) を使用して more_itertools をインストールします。コマンドは
pip install more_itertools
ステップ 2) インストールが完了したら、locate をインポートします 以下に示すモジュール
from more_itertools import locate
以下の例に示すように、リストでlocateモジュールを利用できるようになりました:
from more_itertools import locate my_list = ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru'] print("Originallist : ", my_list) print("Indexes for element Guru :", list(locate(my_list, lambda x: x == 'Guru')))
出力:
Originallist : ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru'] Indexes for element Guru : [0, 3, 6]
まとめ:
- list index() メソッドは、指定された要素のインデックスを見つけるのに役立ちます。これは、インデックスを取得する最も簡単で直接的な方法です。
- list index() メソッドは、指定された要素のインデックスを返します。
- 要素がリストに存在しない場合、index() メソッドはエラーをスローします。たとえば、ValueError:‘Element’ is not in list.
- 組み込みの list メソッドのほかに、リストのループ、リスト内包表記の使用、enumerate() の使用、フィルターの使用など、他の方法を使用してインデックスを取得することもできます。
- for ループと while ループを使用して、特定の要素の複数のインデックスを取得します。
- すべてのインデックスを取得するための迅速で簡単な方法は、リストでリスト内包表記を使用することです。
- リスト内包表記は、新しいシーケンスを作成するために使用される Python 関数です。
- 長いループを減らし、コードを読みやすく、維持しやすくします。
- enumerate を使用して、リスト内の要素のすべてのインデックスを取得できます。
- Enumerate() 関数は、Python で使用できる組み込み関数です。入力を反復可能なオブジェクト (つまり、ループできるオブジェクト) として受け取り、出力は各項目へのカウンターを持つオブジェクトです。
- filter() メソッドは、指定された関数に基づいて、指定されたリストをフィルタリングします。
- Numpy ライブラリは特に配列に使用されます。 NumPy を使用して、リストで指定された要素のインデックスを取得できます。
- more_itertools.locate() は、指定されたリストのインデックスを見つけるのに役立つもう 1 つの Python ライブラリです。
Python