programing

목록에서 처음 N 개의 요소를 제거하는 가장 효율적인 방법은 무엇입니까?

minecode 2021. 1. 14. 08:11
반응형

목록에서 처음 N 개의 요소를 제거하는 가장 효율적인 방법은 무엇입니까?


Python 2.7의 객체 목록에서 처음 n 개의 요소를 제거해야합니다. 루프를 사용하지 않고 쉬운 방법이 있습니까?


목록 분할을 사용하여 목표를 보관할 수 있습니다.

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]

파이썬 목록은 목록의 시작 부분에서 작동하도록 만들어지지 않았으며이 작업에서는 매우 비효율적입니다.

쓸 수있는 동안

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.dequeRaymond Hettinger 및 그 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'

비교:

목록 + 팝 (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

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

This is the code if you want to delete a number of items from the list. You might as well skip the zero before the colon. It does not have that importance. This might do as well.

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

Try to run this code:

del x[:N]

ReferenceURL : https://stackoverflow.com/questions/33626623/the-most-efficient-way-to-remove-first-n-elements-in-a-list

반응형