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


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

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.


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


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]

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


15

Il suffit ensuite de le supprimer:

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

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

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]

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]

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!!

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.