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?

rectangletangle
fonte

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
kevpie
fonte
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.

justin.m.chase
fonte
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
38
>>> x = [0, 1, 2, 3, 4]
>>> x.pop(0)
0

Mais sobre isso aqui .

user225312
fonte
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]
Haes
fonte
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

Zimm3r
fonte
15

Em seguida, basta excluí-lo:

x = [0, 1, 2, 3, 4]
del x[0]
print x
# [1, 2, 3, 4]
Martineau
fonte
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
Yoni Shperling
fonte
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]
vértice
fonte
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]
tsveti_iko
fonte
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!!

Bhaskar Bhuyan
fonte