2010-12-13 2 views

ответ

740

Python List

list.pop (индекс)

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

дель список [индекс]

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

Они оба изменяют ваш первоначальный список.

Другие предложили использовать нарезку:

  • скопирует список
  • Может возвращать подмножество

Кроме того, если вы выполняете много поп (0), вы должны смотреть на collections.deque

from collections import deque 
>>> l = deque(['a', 'b', 'c', 'd']) 
>>> l.popleft() 
'a' 
>>> l 
deque(['b', 'c', 'd']) 
  • Обеспечивает более высокую производительность отрывистый от левого конца списка
+38

Что мне не нравится в этом ответе, так это то, что не ясно, работает ли 'l.pop (0)', используя '0' в качестве индекса для удаления, или если' 0' является значением для которые нужно искать и удалять. – JHixson

+1

@JHixson, эта неоднозначность беспокоила меня в течение некоторого времени. Мотивация заключалась в том, что она использовала данные, предоставленные ОП. В этом случае было бы лучше использовать мои собственные данные образца. – kevpie

+16

Чтобы быть понятным в pop [0], нуль - это индекс – naftalimich

121

нарезка:

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

Что бы на самом деле возвращают подмножество оригинала, но не изменять его.

+6

если 'x' пуст,' x = x [1:] 'оставит его пустым без жалобы. 'x.pop (0)' будет выбрасывать пустой список 'x'. Иногда бросание - это то, что нужно: если предположение о том, что есть хотя бы один элемент в списке, неверно, можно получить уведомление. – ead

19

С списка нарезку можно найти в учебнике Python о lists для получения более подробной информации:

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

вы бы просто сделать это

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

или l = l[1:]

Плюсы и минусы

Используя pop, вы можете получить значение

сказать x = l.pop(0) x будет 0

12

Тогда просто удалите его:

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

Вы также можете использовать list.remove(a[0]) для pop из первого элемента в списке.

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

Почему это лучше, чем 'a.pop (0)' или 'del x [0]'? –

+3

OP не спрашивает о том, как это сделать. Это просто еще один подход к достижению того же! – vertexion

+0

Да, другой подход, который не имеет преимущества перед другими ответами. Есть несколько способов сделать это. Почему бы не дать ответ «a.remove (a [1-1])»? Это другой способ. –

5

Вы можете использовать list.reverse() чтобы изменить список, а затем list.pop() удалить последний элемент, например:

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

Если вы работаете с numpy вам нужно использовать delete метод:

import numpy as np 

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

a = np.delete(a, 0) 

print(a) # [2 3 4 5]