Como remover o primeiro item de uma lista?


773

Eu tenho a lista na qual [0, 1, 2, 3, 4]gostaria de entrar [1, 2, 3, 4]. Como faço para fazer isso?

Respostas:


1260

Lista Python

list.pop (índice)

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

lista del [index]

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

Ambos modificam sua lista original.

Outros sugeriram o uso de fatiar:

  • Copia a lista
  • Pode retornar um subconjunto

Além disso, se você estiver executando muitos pop (0), deve procurar em collections.deque

from collections import deque
>>> l = deque(['a', 'b', 'c', 'd'])
>>> l.popleft()
'a'
>>> l
deque(['b', 'c', 'd'])
  • Fornece um desempenho melhorado na extremidade esquerda da lista

Você também pode usar índices negativos, que têm o mesmo significado que nas listas.
Gabriel Devillers

189

Fatiamento:

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

O que realmente retornaria um subconjunto do original, mas não o modificaria.


17
se xestiver vazio, x=x[1:]deixaria vazio sem reclamar. x.pop(0)jogaria para uma lista vazia x. Às vezes, jogar é o que se deseja: se a suposição de que há pelo menos um elemento na lista estiver errada, é possível que você seja notificado.
ead

Obrigado por isso! Esta é uma resposta melhor, omi, porque não é destrutiva
Hee Jin


29

Com o fatiamento de lista, consulte o tutorial do Python sobre listas para obter mais detalhes:

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

29

você faria isso

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

ou l = l[1:]

Prós e contras

Usando pop, você pode recuperar o valor

dizer x = l.pop(0) xseria0


15

Em seguida, basta excluí-lo:

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

8

Você pode usar list.reverse()para reverter a lista e list.pop()remover o último elemento, por exemplo:

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

5

Você também pode usar list.remove(a[0])para popextrair o primeiro elemento da lista.

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

3
O OP não está perguntando sobre a melhor maneira de fazê-lo. Esta é apenas outra abordagem para conseguir o mesmo!
vertexion

1
Sim, outra abordagem que não tem vantagem sobre as outras respostas. Existem várias maneiras de fazer isso. Por que não dar uma resposta de a.remove(a[1-1])? Essa é outra maneira.
Ned Batchelder

2
O que quero dizer é que sua resposta é pior que a outra e não tem nada para recomendá-la. Não há razão para usar essa resposta sobre as outras. Só porque é "outra maneira" não é um motivo para adicioná-lo aqui.
Ned Batchelder

4
@NedBatchelder Seu ponto é discutível. É um método extra disponível para listas em Python, específico para esta tarefa específica, e por uma questão de integridade, deve ser observado. A BS artificial, um exemplo [1-1], por outro lado, não é. Sem mencionar que sua resposta não é "pior do que as outras respostas" de forma alguma.
precisa saber é o seguinte

8
Eu mantenho minha pergunta: isso parece estranho e artificial e não tem nada para recomendá-lo. De fato, a primeira frase é enganosa, porque você não pode remover o i-ésimo elemento list.remove(a[i]). Com valores duplicados, ele pode encontrar um elemento anterior com o mesmo valor e removê-lo em vez do i'th.
Ned Batchelder

4

Se você estiver trabalhando com numpy, precisará usar o método delete :

import numpy as np

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

a = np.delete(a, 0)

print(a) # [2 3 4 5]

1

Existe uma estrutura de dados chamada "deque" ou fila dupla, que é mais rápida e eficiente que uma lista. Você pode usar sua lista e convertê-la em deque e fazer as transformações necessárias nela. Você também pode converter o deque de volta à 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)

O Deque também fornece funções muito úteis, como inserir elementos em ambos os lados da lista ou em qualquer índice específico. Você também pode girar ou reverter um deque. De uma chance!!

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.