Привет, мне нужно удалить первый элемент из списка объектов в Python 2.7, есть простой способ? возможно, без использования петель.
Самый эффективный способ удалить первые N элементов в списке Python?
Ответ 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.