목록에서 첫 번째 N개 요소를 제거하는 가장 효율적인 방법은 무엇입니까?
Python 2.7의 객체 목록에서 처음 n개의 요소를 제거해야 합니다.루프를 사용하지 않고 쉬운 방법이 있습니까?
목록 슬라이싱을 사용하여 목표를 보관할 수 있습니다.
처음 5개 요소를 제거합니다.
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]
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
목록의 시작 부분에서 요소를 가져와야 하는 경우에는 Raymond Hettinger 및 그 방법을 사용해야 합니다.
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 + peopleft ()
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.
이 코드는 목록에서 여러 항목을 삭제하려는 경우에 사용됩니다.대장 앞에서 0을 건너뛰는 것이 좋습니다.그것은 그 중요성을 가지고 있지 않습니다.이것도 괜찮을 것 같습니다.
l = [1, 2, 3, 4, 5]
del l[:3] # Here 3 specifies the number of items to be deleted.
이 코드를 실행해 보십시오.
del x[:N]
다음 목록이 있다고 가정해 보겠습니다.
mylist = [1,2,3,4,5,6,7,8,9]
그리고 당신은 그것을 제거하기를 원합니다.x
마지막 요소 및 다른 목록에 저장
newlist = [mylist.pop() for _ in range(x)]
요소를 처음부터 제거하기 위해 pop으로 전달한 인수를 수정할 수 있습니다.
newlist = [mylist.pop(0) for _ in range(x)]
또는 첫 번째 요소를 남기고 제거합니다.x
뒤의 요소.
newlist = [mylist.pop(1) for _ in range(x)]
메모리 측면과 복잡성 측면에서 가장 효율적인 접근 방식은 다음과 같습니다.
popped_items = lst[:n]
del lst[:n]
먼저 처음 n개의 항목을 가져오고 해당 항목에만 공간을 할당할 수 있습니다.그런 다음 초기 목록에서 삭제합니다. 이 또한 빠릅니다.
l = [5,1,4,2,3,6]
목록을 가장 작은 것에서 가장 큰 것으로 정렬
l.sort()
목록에서 처음 두 항목 제거
for _ in range(2)
l.remove(l[0])
목록 인쇄
print(l)
언급URL : https://stackoverflow.com/questions/33626623/the-most-efficient-way-to-remove-first-n-elements-in-a-list
'programing' 카테고리의 다른 글
SQL Server 시간 초과 예외를 잡는 방법 (0) | 2023.05.22 |
---|---|
Node.js(package.json)에 대한 "devDependencies" NPM 모듈의 설치를 방지하려면 어떻게 해야 합니까? (0) | 2023.05.22 |
MongoDB - 10진수 유형의 값은 어떻습니까? (0) | 2023.05.22 |
gitstash 변경 사항이 새 지점에 적용됩니까? (0) | 2023.05.22 |
부분적으로 깃과 약속을 선택하는 것. (0) | 2023.05.22 |