446 votes

Comment obtenir le dernier élément d'une liste en Python?

Par exemple, j'ai besoin de les 9 derniers numéros de la liste et je suis sûr qu'il y est une façon de le faire avec le découpage, mais je n'arrive pas à l'obtenir. Je peux obtenir les 9 premiers:

num_list[0:9]

Toute aide serait super. Merci d'avance :)

766voto

winsmith Points 3708

Vous pouvez utiliser des entiers négatifs avec le découpage de l'opérateur. Voici un exemple d'utilisation de python CLI interprète:

>>> a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
>>> a
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
>>> a[-9:]
[4, 5, 6, 7, 8, 9, 10, 11, 12]

la ligne importante est a[-9:]

139voto

cobbal Points 37900

un indice négatif sont décomptés à partir de la fin de la liste, de sorte que:

num_list[-9:]

108voto

Aaron Hall Points 7381

Python découpage est d'une incroyable opération rapide, et c'est un moyen pratique pour accéder rapidement à des parties de vos données.

Tranche de notation pour obtenir les neuf derniers éléments d'une liste (ou de toute autre séquence qui la prend en charge, comme une chaîne de caractères) devrait ressembler à ceci:

num_list[-9:]

Quand je vois cela, j'ai lu la partie entre parenthèses "9e de la fin, à la fin." (En fait, je l'écourter, mentalement "-9, sur")

Explication:

La notation complète est

sequence[start:stop:step]

Mais le côlon est ce qui indique à Python que vous êtes en lui donnant une tranche et pas un index normal. C'est pourquoi la idiomatiques chemin de la copie de listes

list_copy = sequence[:]

Et de compensation est avec:

del my_list[:]

Donner vos tranches un nom descriptif!

Vous trouverez peut-être utile de séparer formant la tranche du passant à l' list.__getitem__ méthode (c'est ce que les crochets ne). Même si vous n'êtes pas nouveau pour elle, il rend votre code plus lisible, afin que d'autres qui peuvent avoir à lire votre code peut plus facilement comprendre ce que vous faites.

Cependant, vous ne pouvez pas affecter certains nombres entiers séparés par des virgules à une variable. Vous devez utiliser la tranche de l'objet:

last_nine_slice = slice(-9, None)

Le deuxième argument, None, est nécessaire, de sorte que le premier argument est interprété comme l' start argument sinon ce serait l' stop argument.

Vous pouvez ensuite passer à la tranche de l'objet de votre séquence:

>>> list(range(100))[last_nine_slice]
[91, 92, 93, 94, 95, 96, 97, 98, 99]

47voto

Nikwin Points 2066

Les 9 derniers éléments peuvent être lues de gauche à droite à l'aide de numlist[-9:], ou de droite à gauche à l'aide de numlist[:-10:-1], comme vous le souhaitez.

>>> a=range(17)
>>> print a
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]
>>> print a[-9:]
[8, 9, 10, 11, 12, 13, 14, 15, 16]
>>> print a[:-10:-1]
[16, 15, 14, 13, 12, 11, 10, 9, 8]

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