En Python, comment obtenez-vous le dernier élément d'une liste?
2067
some_list[-1]
est le plus court et le plus Pythonic.
En fait, vous pouvez faire beaucoup plus avec cette syntaxe. La some_list[-n]
syntaxe obtient le nième au dernier élément. Obtient donc some_list[-1]
le dernier élément, some_list[-2]
obtient l'avant-dernier, etc., jusqu'à some_list[-len(some_list)]
ce qui vous donne le premier élément.
Vous pouvez également définir des éléments de liste de cette manière. Par exemple:
>>> some_list = [1, 2, 3]
>>> some_list[-1] = 5 # Set the last element
>>> some_list[-2] = 3 # Set the second to last element
>>> some_list
[1, 3, 5]
Notez que l'obtention d'un élément de liste par index soulèvera un IndexError
élément si l'élément attendu n'existe pas. Cela signifie que some_list[-1]
déclenchera une exception si some_list
est vide, car une liste vide ne peut pas avoir de dernier élément.
some_list.last
- ce serait une belle ligne de codeSi vos objets
str()
oulist()
peuvent finir par être vides comme ceci:astr = ''
oualist = []
, alors vous voudrez peut-être utiliser à laalist[-1:]
place de l'alist[-1]
objet "similitude".La signification de ceci est:
Là où la distinction est faite, le retour d'un objet de liste vide ou d'un objet str vide est plus un "dernier élément" que un objet d'exception.
la source
if len(my_vector) == 0 or my_vector[-1] != update_val
est un modèle réalisable. mais ce n'est certainement pas une solution globale - ce serait bien d'avoir une forme de syntaxe où None était le résultatxs[-1] if xs else None
Vous pouvez également faire:
Cela dépend de ce que vous voulez faire avec votre liste car la
pop()
méthode supprimera le dernier élément.la source
La façon la plus simple d'afficher le dernier élément en python est
il existe de nombreuses autres méthodes pour atteindre un tel objectif, mais elles sont courtes et faciles à utiliser.
la source
list[-1]
l'erreur se produit.a[-1:][0]
du tout ? Il fournit dea[-1]
toute façon aussi. Explication s'il vous plait?Pour obtenir simplement le dernier élément,
passer
-1
à la notation en indice:Explication
Les index et les tranches peuvent prendre des entiers négatifs comme arguments.
J'ai modifié un exemple de la documentation pour indiquer à quel élément d'une séquence chaque index fait référence, dans ce cas, dans la chaîne
"Python"
, fait-1
référence au dernier élément, le caractère'n'
,:Affectation via le déballage itérable
Cette méthode peut matérialiser inutilement une deuxième liste dans le seul but d'obtenir le dernier élément, mais dans un souci d'exhaustivité (et puisqu'elle prend en charge tout itérable - pas seulement les listes):
Le nom de la variable, head est lié à la liste nouvellement créée inutile:
Si vous avez l'intention de ne rien faire avec cette liste, ce serait plus approprié:
Ou, vraiment, si vous savez que c'est une liste (ou du moins accepte la notation en indice):
Dans une fonction
Un intervenant a déclaré:
Ceux-ci seraient assez simples à définir:
Ou utilisez
operator.itemgetter
:Dans tous les cas:
Cas spéciaux
Si vous faites quelque chose de plus compliqué, vous trouverez peut-être plus performant d'obtenir le dernier élément de manière légèrement différente.
Si vous êtes nouveau dans la programmation, vous devriez éviter cette section, car elle associe des parties d'algorithmes sémantiquement différentes. Si vous modifiez votre algorithme à un endroit, il peut avoir un impact involontaire sur une autre ligne de code.
J'essaie de fournir des mises en garde et des conditions aussi complètement que possible, mais j'ai peut-être manqué quelque chose. Veuillez commenter si vous pensez que je laisse une mise en garde.
Tranchage
Une tranche d'une liste renvoie une nouvelle liste - donc nous pouvons couper de -1 à la fin si nous voulons vouloir l'élément dans une nouvelle liste:
Cela a l'avantage de ne pas échouer si la liste est vide:
Alors que la tentative d'accès par index soulève un problème
IndexError
qui devrait être traité:Mais encore une fois, le découpage à cette fin ne doit être effectué que si vous avez besoin:
for
bouclesEn tant que fonctionnalité de Python, il n'y a pas de portée interne dans une
for
boucle.Si vous effectuez déjà une itération complète sur la liste, le dernier élément sera toujours référencé par le nom de variable attribué dans la boucle:
Ce n'est pas sémantiquement la dernière chose de la liste. C'est sémantiquement la dernière chose à laquelle le nom
item
était lié.Ainsi, cela ne devrait être utilisé pour obtenir le dernier élément que si vous
Obtention et suppression
Nous pouvons également muter notre liste d'origine en supprimant et en renvoyant le dernier élément:
Mais maintenant, la liste d'origine est modifiée.
(
-1
est en fait l'argument par défaut, illist.pop
peut donc être utilisé sans argument d'index):Ne faites cela que si
Ce sont des cas d'utilisation valides, mais pas très courants.
Sauvegarde du reste de l'inverse pour plus tard:
Je ne sais pas pourquoi vous le feriez, mais pour être complet, car
reversed
retourne un itérateur (qui prend en charge le protocole d'itérateur), vous pouvez transmettre son résultat ànext
:C'est comme faire l'inverse:
Mais je ne peux pas penser à une bonne raison de le faire, sauf si vous aurez besoin du reste de l'itérateur inversé plus tard, qui ressemblerait probablement plus à ceci:
et maintenant:
la source
Pour éviter
IndexError: list index out of range
, utilisez cette syntaxe:la source
Une autre méthode:
la source
lst[-1]
est la meilleure approche, mais avec des itérables généraux, considérezmore_itertools.last
:Code
la source
list[-1]
récupérera le dernier élément de la liste sans modifier la liste.list.pop()
récupérera le dernier élément de la liste, mais il mutera / modifiera la liste d'origine. Habituellement, la mutation de la liste d'origine n'est pas recommandée.Alternativement, si, pour une raison quelconque, vous recherchez quelque chose de moins pythonique, vous pouvez utiliser
list[len(list)-1]
, en supposant que la liste n'est pas vide.la source
Vous pouvez également utiliser le code ci-dessous, si vous ne souhaitez pas obtenir IndexError lorsque la liste est vide.
la source
Ok, mais qu'en est-il de commun dans presque toutes les langues
items[len(items) - 1]
? C'est l'OMI le moyen le plus simple d'obtenir le dernier élément, car il ne nécessite aucune connaissance pythonique .la source
some_list[-1]
approche parce que c'est plus logique et montre ce qu'il fait réellement mieux qu'àsome_list[-1]
mon avis.