2010-12-13 13 views

Respuesta

740

Python List

list.pop (índice)

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

del lista [índice]

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

Ambos modifican su lista original.

Otros han sugerido utilizar rebanar:

  • Copia la lista
  • puede devolver un subconjunto

Además, si va a realizar muchas pop (0), usted debe buscar en collections.deque

from collections import deque 
>>> l = deque(['a', 'b', 'c', 'd']) 
>>> l.popleft() 
'a' 
>>> l 
deque(['b', 'c', 'd']) 
  • Proporciona un mayor rendimiento apareciendo desde el extremo izquierdo de la lista
+38

Lo que no me gusta de esta respuesta es que no está claro si 'l.pop (0)' está funcionando al usar '0' como el índice al que se eliminará, o si' 0' es un valor para que buscar y eliminar. – JHixson

+1

@JHixson, Esa ambigüedad también me ha molestado por algún tiempo. La motivación fue que estaba usando los datos proporcionados por el OP. En este caso, puede haber sido mejor usar mis propios datos de muestra. – kevpie

+16

Para que quede claro en pop [0] el cero es el índice – naftalimich

29
>>> x = [0, 1, 2, 3, 4] 
>>> x.pop(0) 
0 

Más sobre este here.

121

rebanar:

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

Lo cual en realidad devolver un subconjunto de la original, pero no modificarlo.

+6

si 'x' está vacío,' x = x [1:] 'lo dejaría vacío sin quejarse. 'x.pop (0)' arrojaría una lista vacía 'x'. A veces, tirar 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

19

con la lista de divisiones, consulte el tutorial de Python sobre lists para más detalles:

>>> l = [0, 1, 2, 3, 4] 
>>> l[1:] 
[1, 2, 3, 4] 
22

usted acaba de hacer esto

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

o l = l[1:]

pros y los contras

Usando pop puedes recuperar el valor

dicen x = l.pop(0) x habría 0

12

Entonces apenas suprimirlo:

x = [0, 1, 2, 3, 4] 
del x[0] 
print x 
# [1, 2, 3, 4] 
5

También puede utilizar list.remove(a[0])-pop a cabo el primer elemento de la lista.

>>>> a=[1,2,3,4,5] 
>>>> a.remove(a[0]) 
>>>> print a 
>>>> [2,3,4,5] 
+0

¿Por qué es mejor que 'a.pop (0)' o 'del x [0]'? –

+3

OP no pregunta cuál es la mejor manera de hacerlo. ¡Este es solo otro enfoque para lograr lo mismo! – vertexion

+0

Sí, otro enfoque que no tiene ninguna 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. –

5

Puede utilizar list.reverse() para revertir la lista, entonces list.pop() para 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 
1

Si está trabajando con numpy es necesario utilizar el delete método:

import numpy as np 

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

a = np.delete(a, 0) 

print(a) # [2 3 4 5] 
Cuestiones relacionadas