Подтвердить что ты не робот

Самый эффективный способ удалить первые N элементов в списке Python?

Привет, мне нужно удалить первый элемент из списка объектов в Python 2.7, есть простой способ? возможно, без использования петель.

4b9b3361

Ответ 1

Вы можете использовать нарезку списка для создания своей цели:

n = 5
mylist = [1,2,3,4,5,6,7,8,9]
newlist = mylist[n:]
print newlist

Выходы:

[6, 7, 8, 9]

Или del, если вы хотите использовать только один список:

n = 5
mylist = [1,2,3,4,5,6,7,8,9]
del mylist[:n]
print mylist

Выходы:

[6, 7, 8, 9]

Ответ 2

Списки Python не были задействованы в начале списка и очень неэффективны в этой операции.

Пока вы можете писать

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

Он очень неэффективен.


Если вы хотите удалить элементы из своего списка, вы можете сделать это с помощью del:

del mylist[:n]

Что также очень быстро:

In [34]: %%timeit
help=range(10000)
while help:
    del help[:1000]
   ....:
10000 loops, best of 3: 161 µs per loop

Если вам нужно получить элементы с самого начала списка, вы должны использовать collections.deque Раймондом Хеттингером и его popleft().

from collections import deque

deque(['f', 'g', 'h', 'i', 'j'])

>>> d.pop()                          # return and remove the rightmost item
'j'
>>> d.popleft()                      # return and remove the leftmost item
'f'

Сравнение:

list + pop (0)

In [30]: %%timeit
   ....: help=range(10000)
   ....: while help:
   ....:     help.pop(0)
   ....:
100 loops, best of 3: 17.9 ms per loop

deque + popleft()

In [33]: %%timeit
help=deque(range(10000))
while help:
    help.popleft()
   ....:
1000 loops, best of 3: 812 µs per loop

Ответ 3

Попробуйте запустить этот код:

del x[:N]

Ответ 4

l = [1, 2, 3, 4, 5]
del l[0:3] # Here 3 specifies the number of items to be deleted.

Это код, если вы хотите удалить несколько элементов из списка. Вы также можете пропустить ноль перед двоеточием. Это не имеет такого значения. Это может также сделать.

l = [1, 2, 3, 4, 5]
del l[:3] # Here 3 specifies the number of items to be deleted.