2465 votos

¿Cómo conseguir el último elemento de una lista?

En Python, ¿cómo se obtiene el último elemento de una lista?

3628voto

Sasha Chedygov Puntos 36783

some_list[-1]es el más corto y más Pythonico.

De hecho, puedes hacer mucho más con esta sintaxis. La sintaxis some_list[-n] obtiene el enésimo último elemento. Así que some_list[-1] ...obtiene el último elemento, some_list[-2] consigue el penúltimo, etc., todo el camino hasta some_list[-len(some_list)] que te da el primer elemento.

También puede establecer elementos de la lista de esta manera. Por ejemplo:

>>> 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]

50 votos

Echo de menos algo como some_list.last - sería una hermosa línea de código

295voto

DevPlayer Puntos 996

Si tus objetos str() o list() pueden terminar vacíos como tal:astr = ''oalist = []entonces puede que quieras usaralist[-1:]en lugar dealist[-1]para el objeto "igualdad".

El significado de esto es:

alist = []
alist[-1]   # will generate an IndexError exception whereas 
alist[-1:]  # will return an empty list
astr = ''
astr[-1]    # will generate an indexError excepttion whereas
astr[-1:]   # will return an empty str

Donde la distinción que se hace es que devolver un objeto de la lista vacía o un objeto str vacío es más bien un "último elemento", como un objeto de excepción.

36 votos

No votado porque creo que el núcleo de esta respuesta es incorrecto. Obtener una lista cuando se quiere un elemento sólo pospone el inevitable "índice de lista fuera de rango" - y eso es lo que debería ocurrir cuando se intenta obtener un elemento de una lista vacía. Para Strings astr[-1:] podría ser un enfoque válido ya que devuelve el mismo tipo que astr[-1], pero no creo que el ':' ayude a tratar con listas vacías (y la pregunta es sobre listas). Si la idea es usar "alist[-1:]" como condicional en lugar de "len(alist) > 0", creo que es mucho más legible usar este último. (Si se me escapa algo, me gustaría que me dieran un voto positivo)

10 votos

Tu voto negativo es comprensible y válido. Sin embargo, me parece que hay dos campos básicos sobre para qué sirven los objetos de excepción. Una certeza es que las excepciones detienen tu aplicación. Un campo utiliza las excepciones en las cláusulas try mientras que el otro campo utilizaría la estructura if len(alist)>0: en su lugar. En cualquier caso, las excepciones son objetos que detienen tu código. Y como tal, para mí, son menos objetos de secuencia que las secuencias "null" devueltas, que no detienen el código. Mi preferencia es usar cláusulas IF para probar objetos "nulos" en lugar de objetos que detienen mi código y que evito con una cláusula try.

6 votos

Upvoted porque la sintaxis de las rodajas vale la pena la discusión, sin embargo estoy de acuerdo con @StanKurdziel en que la morfología es incorrecta, sólo estás moviendo el goalpost - Encontré que mi propia solución estaba relacionada con el uso primario de 'añadir esto a la lista si no lo has añadido ya' (gráficos de línea delta), por lo que la expresión combinada if len(my_vector) == 0 or my_vector[-1] != update_val es un patrón viable. pero ciertamente no es una solución global - sería bueno tener una forma de sintaxis donde None fuera el resultado

123voto

Taurus Olson Puntos 1354

También puedes hacerlo:

alist.pop()

Depende de lo que quieras hacer con tu lista porque el método pop() borrará el último elemento.

91voto

Atul Arvind Puntos 4264

La forma más simple de mostrar el último elemento en Python es

>>> list[-1:] # returns indexed value
    [3]
>>> list[-1]  # returns value
    3

hay muchos otros métodos para lograr tal objetivo, pero estos son cortos y dulces de usar.

3 votos

Si la longitud de su lista es cero, esta solución funciona mientras list[-1] se equivocará.

-1voto

Abdul Majeed Puntos 49

Otra forma más simple de mostrar el último elemento en Python es

>>> l = [1,2,3,'last-element']
>>> print l[len(l)-1]
last-element

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X