次のように、値の最初と最後のインデックスを提供するリストの一部である組み込みメソッドはありますか?
verts.IndexOf(12.345)
verts.LastIndexOf(12.345)
シーケンスには、最初の発生のインデックスを返すメソッドindex(value)
があります-あなたの場合、これはverts.index(value)
になります。
_verts[::-1]
_で実行して、最後のインデックスを見つけることができます。ここでは、これはlen(verts) - 1 - verts[::-1].index(value)
になります
i1 = yourlist.index(yourvalue)
およびi2 = yourlist.rindex(yourvalue).
を使用します
myvalue
で最後に出現するmylist
のインデックスを検索する場合:
len(mylist) - mylist[::-1].index(myvalue) - 1
小さなヘルパー関数として:
def rindex(mylist, myvalue):
return len(mylist) - mylist[::-1].index(myvalue) - 1
Pythonリストには index()
メソッドがあり、これを使用してfirstオカレンスの位置を見つけることができますリスト内のアイテムの。リストに値が見つからない場合、list.index()
はValueError
を発生させるので、try
/except
でラップすることもできます。
try:
idx = lst.index(value)
except ValueError:
idx = None
リスト内のアイテムのlastオカレンスの位置を効率的に(つまり、反転リストを作成せずに)見つけるには、この関数を使用できます:
def rindex(lst, value):
for i, v in enumerate(reversed(lst)):
if v == value:
return len(lst) - i - 1 # return the index in the original list
return None
print(rindex([1, 2, 3], 3)) # 2
print(rindex([3, 2, 1, 3], 3)) # 3
print(rindex([3, 2, 1, 3], 4)) # None
この方法は上記よりも最適化できます
def rindex(iterable, value):
try:
return len(iterable) - next(i for i, val in enumerate(reversed(iterable)) if val == value) - 1
except StopIteration:
raise ValueError