Y a-t-il des méthodes intégrées qui font partie des listes qui me donneraient le premier et le dernier index d'une certaine valeur, comme:
verts.IndexOf(12.345)
verts.LastIndexOf(12.345)
Les séquences ont une méthode index(value)
qui retourne l'indice de première occurrence - dans votre cas, ce serait verts.index(value)
.
Vous pouvez l'exécuter sur verts[::-1]
Pour connaître le dernier index. Ici, ce serait len(verts) - 1 - verts[::-1].index(value)
Utilisez i1 = yourlist.index(yourvalue)
et i2 = yourlist.rindex(yourvalue).
Si vous recherchez l'index de la dernière occurrence de myvalue
dans mylist
:
len(mylist) - mylist[::-1].index(myvalue) - 1
En tant que petite fonction d'aide:
def rindex(mylist, myvalue):
return len(mylist) - mylist[::-1].index(myvalue) - 1
Les listes Python ont la méthode index()
, que vous pouvez utiliser pour trouver la position de la première occurrence d'un élément dans une liste. Notez que list.index()
lève ValueError
lorsque la valeur n'est pas trouvée dans la liste, vous pouvez donc l'envelopper dans try
/except
:
try:
idx = lst.index(value)
except ValueError:
idx = None
Pour trouver la position de la dernière occurrence d'un élément dans une liste (c'est-à-dire sans créer la liste inversée), vous pouvez utiliser cette fonction:
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
Cette méthode peut être plus optimisée que ci-dessus
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