반응형
목록에서 처음 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.deque
Raymond 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
반응형
'programing' 카테고리의 다른 글
Java-R 통합? (0) | 2021.01.15 |
---|---|
Swift에서 고유 한 객체 목록 배열을 만드는 방법 (0) | 2021.01.14 |
Jenkins 파이프 라인을 사용하여 여러 git 저장소를 동일한 작업으로 체크 아웃 (0) | 2021.01.14 |
IE7은 왜 image / jpeg가 아닌 mime 유형의 image / pjpeg를 지정합니까? (0) | 2021.01.14 |
sqlite3.exe 명령 줄 도구로 프로세스를 자동화하는 방법은 무엇입니까? (0) | 2021.01.14 |