Python 例付きリストインデックス()

リストは、異なるデータ型(int、float、Boolean、文字列など)の項目を順序どおりに格納するコンテナです。これは、 Pythonデータは角括弧 ([]) 内に記述され、値はカンマ (,) で区切られます。

リスト内の項目には、インデックス 0 から始まる最初の要素のインデックスが付けられます。新しい項目を追加するか、既存の項目を更新または削除することによって、作成されたリストに変更を加えることができます。 重複した項目やネストされたリストを含めることもできます。

リストには多くのメソッドが用意されていますが、重要なものの XNUMX つは、index() です。

Python リストインデックス()

list Index() メソッドは、指定された要素の最初の最も低いインデックスを見つけるのに役立ちます。 リスト内に重複した要素がある場合は、要素の最初のインデックスが返されます。 これはインデックスを取得する最も簡単で簡単な方法です。

組み込みのリストの Index() メソッド以外にも、リスト内包表記、enumerate()、フィルター メソッドを使用したリストのループなど、他の方法を使用してインデックスを取得することもできます。

list Index() メソッドは、指定された要素の最初の小さいインデックスを返します。

構文

list.index(element, start, end)

Parameters

Parameters 説明
素子 インデックスを取得したい要素。
start このパラメータはオプションです。 start: インデックスを定義して要素を検索できます。 指定しない場合、デフォルト値は 0 です。
end このパラメータはオプションです。 検索する要素の終了インデックスを指定できます。 指定しない場合は、リストの最後まで考慮されます。

戻り値

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 ループと list.index() の使用

while ループを使用すると、指定されたリストをループして、指定された要素のすべてのインデックスを取得します。

リスト: my_list = ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru'] では、要素 'Guru' のすべてのインデックスが必要です。

以下の例は、while ループを使用してすべてのインデックスを取得する方法を示しています。

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 を使用してリスト内の要素のインデックスを取得する

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 を利用するには、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)。
  • 組み込みのリスト メソッド以外にも、リストのループ、リスト内包表記の使用、enumerate() の使用、フィルターの使用など、他の方法を使用してインデックスを取得することもできます。
  • for ループと while ループを使用して、特定の要素の複数のインデックスを取得します。
  • すべてのインデックスを取得するには、リストに対してリスト内包表記を使用するのが迅速かつ簡単な方法です。
  • リスト内包表記は Python 新しいシーケンスを作成するために使用される関数。
  • これらは、長いループを削減し、コードを読みやすく、保守しやすくするのに役立ちます。
  • enumerate を使用すると、リスト内の要素のすべてのインデックスを取得できます。
  • Enumerate() 関数は、Python で利用できる組み込み関数です。 入力を反復可能なオブジェクト (つまり、ループ可能なオブジェクト) として受け取り、出力は各項目に対するカウンターを持つオブジェクトになります。
  • filter() メソッドは、指定された関数に基づいて指定されたリストをフィルタリングします。
  • Numpy ライブラリは特に配列に使用されます。 NumPy を使用して、リストに指定された要素のインデックスを取得できます。
  • more_itertools.locate() は、指定されたリストのインデックスを見つけるのに役立つさらに別の Python ライブラリです。