88 votes

Comment trouver la dernière occurrence d'un élément dans une liste Python ?

Disons que j'ai cette liste :

li = ["a", "b", "a", "c", "x", "d", "a", "6"]

D'après ce que l'aide m'a montré, il n'y a pas de fonction intégrée qui renvoie la dernière occurrence d'une chaîne de caractères (comme l'inverse de index ). Donc, en gros, comment puis-je trouver la dernière occurrence de "a" dans la liste donnée ?

0voto

Sapphire_Brick Points 1149
lastIndexOf = lambda array, item: len(array) - (array[::-1].index(item)) - 1

0voto

danijar Points 4522

Si la liste est petite, vous pouvez calculer tous les indices et retourner le plus grand :

index = max(i for i, x in enumerate(elements) if x == 'foo')

0voto

Rubel Points 332

Voici une fonction permettant de trouver la dernière occurrence d'un élément dans une liste. Une liste et un élément sont passés à la fonction.

li = ["a", "b", "a", "c", "x", "d", "a", "6"]
element = "a"

def last_occurrence(li,element):
    for i in range(len(li)-1,0,-1):
        if li[i] == element:
            return i

    return -1

last_occ = last_occurrence(li, element)
if (last_occ != -1):
    print("The last occurrence at index : ",last_occ)
else:
    print("Element not found")

A l'intérieur de la last_occurrence fonction a for La boucle est utilisée avec range . qui va itérer la liste dans l'ordre inverse. si l'élément de l'index courant correspond à l'indice searched la fonction renverra l'élément index . Dans le cas où, après avoir comparé tous les éléments de la liste, la fonction searched n'est pas trouvé, la fonction retournera -1 .

-1voto

user2426679 Points 137
def rindex(lst, val):
    try:
        return next(len(lst)-i for i, e in enumerate(reversed(lst), start=1) if e == val)
    except StopIteration:
        raise ValueError('{} is not in list'.format(val))

-1voto

user2782561 Points 1

Val = [1,2,2,2,2,2,4,5].

Si vous avez besoin de trouver la dernière occurrence de 2

last_occurence = (len(val) -1) - list(reversed(val)).index(2)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X