目次
説明
Pythonのlist.indexメソッドは、リスト内の特定の値の要素のインデックスを返します。
構文とパラメーター
list.index(element, start, end)
名前 | 意味 |
素子 | 照会する要素の値(省略できないパラメーター)は、任意のタイプのオブジェクトインスタンスにすることができます。 |
開始 | オプションの整数パラメーター、検索の開始位置。 |
終わり | オプションの整数パラメーター、検索の終了位置。 |
戻り値
int。list.indexメソッドは、パラメーター値が配置されているリストのインデックスを返します。
使用例
リスト内のクエリ
indexメソッドは、パラメータが配置されているリスト内のインデックスを返します。
>>> demo = ["running", "pending", "error"]
>>> demo.index("running")
0
リスト内の特定の間隔でクエリを実行します
デフォルトでは、indexメソッドはリスト全体で照会する値を検索します。開始パラメーターと終了パラメーターを使用して、リスト内の特定の範囲を検索します。終了値を省略した場合は、開始値に対応するインデックスから検索を開始し、リストの最後の要素まで検索を継続することを意味します。開始値と終了値の両方が存在する場合、それは閉じた間隔[start、end-1]から検索することを意味します。
>>> demo = ["a", "p", "p", "l", "e"]
>>> demo.index("p", 2)
2
>>> demo.index("p", 3, 4)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: 'p' is not in list
予防
照会する要素がリストに存在しません
照会する要素がリストに存在しない場合、indexメソッドはValueError例外をスローします。
>>> demo = ["running", "pending", "error"]
>>> demo.index("finish")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: 'finish' is not in list
照会する要素がリストに複数存在します
クエリ対象の要素がリストに複数存在する場合、indexメソッドはリストの先頭に最も近い要素のインデックスを返します。
>>> demo = ["running", "pending", "error", "error"]
>>> demo.index("error")
2
したがって、値がリストに複数回存在する場合、indexメソッドはリストの先頭に最も近い要素のインデックス値のみを返すことができ、一致するすべての値のインデックスを返すことはできません。
開始が終了よりも大きい
startとendは正または負になる可能性があるため、実際にはリストのインデックス添え字を実際のロジックで表します。startに対応する論理添え字が右側にあるか、endに対応する論理添え字と重複している場合、indexメソッドはValueError例外をスローします。たとえば、次のコードでは、start(1)の値はend(-1)の値よりも大きいですが、end値で表される論理インデックスは4であり、startの右側にあるため、index正しく返すことができます。
>>> demo = ["a", "p", "p", "l", "e"]
>>> demo.index("l", 1, -1)
3
次のコードの開始値で示される論理インデックスは、終了値で示される論理インデックスの右側にあり、重複しています。このような場合、indexメソッドはValueError例外をスローします。
>>> demo = ["a", "p", "p", "l", "e"]
>>> demo.index("p", 3, 1)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: 'p' is not in list
>>> demo.index("p", 1, 1)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: 'p' is not in list
開始と終了がリストの有効範囲を超えています
startとendの値には、次の可能性があります。
A.開始と終了の両方がリストの長さの有効な範囲内にあります。
B.開始は有効な範囲内にありますが、終了は有効範囲内ではありません。
C.開始が有効な範囲になく、終了が有効な範囲にあります。
D.開始と終了の両方が有効な範囲内にありません。
シナリオAの場合、開始と終了の両方が有効な長さの範囲内にある場合、indexは検索対象の要素のインデックスを返すか、ValueError例外をスローすることをすでに説明しました。
開始と終了がリストの長さの有効範囲を超えた場合、インデックスメソッドはエラーを報告しません。代わりに、長さを超えた開始または終了は最大長の値、つまり添え字+1と見なされます。リストの最後の要素。
>>> demo = ["a", "p", "p", "l", "e"]
>>> demo.index("e", 0, 400)
4
上記のコードでは、終了値は400であり、これは明らかにリストの最大範囲を超えています。ただし、開始値は0であり、リストの長さの範囲内であるため、indexメソッドは0番目の要素から要素「e」を検索し、最後の要素まで続行します。
CおよびDシナリオの場合、indexメソッドはValueError例外をスローします。
>>> demo = ["a", "p", "p", "l", "e"]
>>> demo.index("e", 500, 2)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: 'e' is not in list
>>>
>>> demo.index("e", 400, 500)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: 'e' is not in list