Comment supprimer le premier élément d'une liste?

773

J'ai la liste [0, 1, 2, 3, 4]que j'aimerais en faire [1, 2, 3, 4]. Comment dois-je procéder?

rectangletangle
la source

Réponses:

1261

Liste Python

list.pop (index)

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

del list [index]

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

Ces deux modifient votre liste d'origine.

D'autres ont suggéré d'utiliser le tranchage:

  • Copie la liste
  • Peut renvoyer un sous-ensemble

De plus, si vous effectuez plusieurs pop (0), vous devriez regarder collections.deque

from collections import deque
>>> l = deque(['a', 'b', 'c', 'd'])
>>> l.popleft()
'a'
>>> l
deque(['b', 'c', 'd'])
  • Fournit des performances plus élevées à partir de l'extrémité gauche de la liste
kevpie
la source
Vous pouvez également utiliser des index négatifs, qui ont la même signification qu'avec les listes.
Gabriel Devillers
189

Tranchage:

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

Ce qui retournerait en fait un sous-ensemble de l'original mais ne le modifierait pas.

justin.m.chase
la source
17
si xest vide, x=x[1:]le laisserait vide sans se plaindre. x.pop(0)jetterait pour une liste vide x. Parfois, lancer est ce que l'on veut: si l'hypothèse qu'il y a au moins un élément dans la liste est erronée, on peut vouloir être notifié.
ead
Merci pour cela! C'est une meilleure réponse, imo, car ce n'est pas destructeur
Hee Jin
39
>>> x = [0, 1, 2, 3, 4]
>>> x.pop(0)
0

Plus à ce sujet ici .

user225312
la source
29

Avec le découpage de liste, consultez le didacticiel Python sur les listes pour plus de détails:

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

tu ferais juste ça

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

ou l = l[1:]

Avantages et inconvénients

En utilisant pop, vous pouvez récupérer la valeur

dire x = l.pop(0) xserait0

Zimm3r
la source
15

Il suffit ensuite de le supprimer:

x = [0, 1, 2, 3, 4]
del x[0]
print x
# [1, 2, 3, 4]
martineau
la source
8

Vous pouvez utiliser list.reverse()pour inverser la liste, puis list.pop()pour supprimer le dernier élément, par exemple:

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
la source
5

Vous pouvez également utiliser list.remove(a[0])pour popsortir le premier élément de la liste.

>>>> a=[1,2,3,4,5]
>>>> a.remove(a[0])
>>>> print a
>>>> [2,3,4,5]
vertexion
la source
3
OP ne demande pas la meilleure façon de le faire. Ceci est juste une autre approche pour y parvenir!
vertexion
1
Oui, une autre approche qui n'a aucun avantage sur les autres réponses. Il existe plusieurs façons de le faire. Pourquoi ne pas répondre a.remove(a[1-1])? Voilà une autre façon.
Ned Batchelder
2
Mon point est que votre réponse est pire que les autres réponses et n'a rien à recommander. Il n'y a aucune raison d'utiliser cette réponse par rapport aux autres. Ce n'est pas parce que c'est "une autre façon" de l'ajouter ici.
Ned Batchelder
4
@NedBatchelder Votre point est sans objet. C'est une méthode supplémentaire disponible pour les listes en Python, spécifique à cette tâche particulière, et par souci d'exhaustivité, il convient de le noter. Le BS artificiel un exemple [1-1], d'autre part, ce n'est pas le cas. Sans compter que sa réponse n'est en aucun cas "pire que les autres réponses".
Hejazzman
8
Je maintiens ma question: cela semble étrange et artificiel, et n'a rien à recommander. En fait, la première phrase est trompeuse, car vous ne pouvez pas supprimer le ième élément avec list.remove(a[i]). Avec des valeurs en double, il peut trouver un élément antérieur avec la même valeur et supprimer celui-ci au lieu du ième.
Ned Batchelder
4

Si vous travaillez avec numpy, vous devez utiliser la méthode 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
la source
1

Il existe une infrastructure de données appelée "deque" ou file d'attente à double extrémité qui est plus rapide et efficace qu'une liste. Vous pouvez utiliser votre liste et la convertir en deque et y effectuer les transformations requises. Vous pouvez également reconvertir le deque en liste.

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 fournit également des fonctions très utiles comme l'insertion d'éléments de chaque côté de la liste ou de tout index spécifique. Vous pouvez également faire pivoter ou inverser une déque. Essaie!!

Bhaskar Bhuyan
la source