¿Cómo eliminar el primer elemento de una lista?

773

Tengo la lista [0, 1, 2, 3, 4] que me gustaría incluirla [1, 2, 3, 4]. ¿Cómo hago esto?

rectángulo
fuente

Respuestas:

1261

Lista de Python

list.pop (index)

>>> l = ['a', 'b', 'c', 'd']
>>> l.pop(0)
'a'
>>> l
['b', 'c', 'd']
>>> 

del list [índice]

>>> l = ['a', 'b', 'c', 'd']
>>> del l[0]
>>> l
['b', 'c', 'd']
>>> 

Ambos modifican su lista original.

Otros han sugerido usar rebanadas:

  • Copia la lista
  • Puede devolver un subconjunto

Además, si está ejecutando muchos pop (0), debería mirar collections.deque

from collections import deque
>>> l = deque(['a', 'b', 'c', 'd'])
>>> l.popleft()
'a'
>>> l
deque(['b', 'c', 'd'])
  • Proporciona un mayor rendimiento emergente desde el extremo izquierdo de la lista
kevpie
fuente
También puede usar índices negativos, que tienen el mismo significado que con las listas.
Gabriel Devillers
189

Rebanar:

x = [0,1,2,3,4]
x = x[1:]

Lo que en realidad devolvería un subconjunto del original pero no lo modificaría.

justin.m.comprar
fuente
17
si xestá vacío, x=x[1:]lo dejaría vacío sin quejarse. x.pop(0)tiraría por una lista vacía x. A veces, lanzar es lo que uno quiere: si la suposición de que hay al menos un elemento en la lista es incorrecta, es posible que desee recibir una notificación.
Ead
¡Gracias por esto! Esta es una mejor respuesta, porque no es destructivo
Hee Jin
39
>>> x = [0, 1, 2, 3, 4]
>>> x.pop(0)
0

Más sobre esto aquí .

usuario225312
fuente
29

Con el corte de listas, vea el tutorial de Python sobre listas para más detalles:

>>> l = [0, 1, 2, 3, 4]
>>> l[1:]
[1, 2, 3, 4]
Haes
fuente
29

solo harías esto

l = [0, 1, 2, 3, 4]
l.pop(0)

o l = l[1:]

Pros y contras

Usando pop puedes recuperar el valor

decir x = l.pop(0) xsería0

Zimm3r
fuente
15

Luego solo bórralo:

x = [0, 1, 2, 3, 4]
del x[0]
print x
# [1, 2, 3, 4]
Martineau
fuente
8

Puede usar list.reverse()para invertir la lista y luego list.pop()eliminar el último elemento, por ejemplo:

l = [0, 1, 2, 3, 4]
l.reverse()
print l
[4, 3, 2, 1, 0]


l.pop()
0
l.pop()
1
l.pop()
2
l.pop()
3
l.pop()
4
Yoni Shperling
fuente
5

También puede usar list.remove(a[0])para popeliminar el primer elemento de la lista.

>>>> a=[1,2,3,4,5]
>>>> a.remove(a[0])
>>>> print a
>>>> [2,3,4,5]
vertexion
fuente
3
OP no está preguntando sobre la mejor manera de hacerlo. ¡Este es solo otro enfoque para lograr lo mismo!
vertexion
1
Sí, otro enfoque que no tiene ventaja sobre las otras respuestas. Hay muchas formas de hacerlo. ¿Por qué no dar una respuesta de a.remove(a[1-1])? Esa es otra forma.
Ned Batchelder
2
Mi punto es que su respuesta es peor que las otras respuestas, y no tiene nada que recomendar. No hay razón para usar esta respuesta sobre las otras. El hecho de que sea "otra forma" no es una razón para agregarlo aquí.
Ned Batchelder
44
@NedBatchelder Tu punto es discutible. Es un método adicional disponible para las listas en Python, específico para esta tarea en particular, y en aras de la exhaustividad debe tenerse en cuenta. El BS inventado un ejemplo [1-1], por otro lado, no lo es. Sin mencionar que su respuesta no es "peor que las otras respuestas" de ninguna manera.
Hejazzman
8
Mantengo mi pregunta: esto parece extraño y artificial, y no tiene nada que recomendar. De hecho, la primera oración es engañosa, porque no se puede eliminar el elemento i con list.remove(a[i]). Con valores duplicados, puede encontrar un elemento anterior con el mismo valor y eliminar ese en lugar del i.
Ned Batchelder
4

Si está trabajando con numpy , debe usar el método de eliminación :

import numpy as np

a = np.array([1, 2, 3, 4, 5])

a = np.delete(a, 0)

print(a) # [2 3 4 5]
tsveti_iko
fuente
1

Hay una estructura de datos llamada "deque" o cola doble que es más rápida y eficiente que una lista. Puede usar su lista y convertirla a deque y hacer las transformaciones requeridas en ella. También puede convertir la deque a la lista.

import collections
mylist = [0, 1, 2, 3, 4]

#make a deque from your list
de = collections.deque(mylist)

#you can remove from a deque from either left side or right side
de.popleft()
print(de)

#you can covert the deque back to list
mylist = list(de)
print(mylist)

Deque también proporciona funciones muy útiles, como insertar elementos en cualquier lado de la lista o en cualquier índice específico. También puede rotar o invertir una deque. ¡¡Darle una oportunidad!!

Bhaskar Bhuyan
fuente