목록에서 첫 번째 항목을 제거하는 방법?


773

목록 [0, 1, 2, 3, 4]을 만들려고합니다 [1, 2, 3, 4]. 어떻게하면 되나요?

답변:


1259

파이썬리스트

list.pop (인덱스)

>>> l = ['a', 'b', 'c', 'd']
>>> l.pop(0)
'a'
>>> l
['b', 'c', 'd']
>>> 

델 목록 [인덱스]

>>> l = ['a', 'b', 'c', 'd']
>>> del l[0]
>>> l
['b', 'c', 'd']
>>> 

이들은 모두 원래 목록을 수정합니다.

다른 사람들은 슬라이싱을 제안했습니다.

  • 리스트를 복사
  • 부분 집합을 반환 할 수있다

또한 많은 pop (0)을 수행하는 경우 collections를 봐야합니다.

from collections import deque
>>> l = deque(['a', 'b', 'c', 'd'])
>>> l.popleft()
'a'
>>> l
deque(['b', 'c', 'd'])
  • 목록의 왼쪽 끝에서 더 높은 성능을 제공합니다

음수 색인을 사용할 수도 있는데, 목록과 동일한 의미를 갖습니다.
Gabriel Devillers

189

슬라이싱 :

x = [0,1,2,3,4]
x = x[1:]

실제로 원본의 하위 집합을 반환하지만 수정하지는 않습니다.


17
경우 x비어 x=x[1:]는 불평하지 않고 비워두고있다. x.pop(0)빈 목록을 던질 것 x입니다. 때때로 던지는 것은 원하는 것입니다 :리스트에 최소한 요소가 있다고 가정하면 틀리게 알림을받을 수 있습니다.
ead

감사합니다! 이것은 파괴적이지 않기 때문에 더 나은 대답입니다, imo
Hee Jin


29

목록 슬라이싱을 사용하면 자세한 내용 은 목록에 대한 Python 자습서 를 참조하십시오.

>>> l = [0, 1, 2, 3, 4]
>>> l[1:]
[1, 2, 3, 4]

29

당신은 이것을 할 것입니다

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

또는 l = l[1:]

장점과 단점

pop을 사용하면 값을 검색 할 수 있습니다

~라고 x = l.pop(0) x말하다0


15

그런 다음 삭제하십시오.

x = [0, 1, 2, 3, 4]
del x[0]
print x
# [1, 2, 3, 4]

8

예를 들어 list.reverse()목록 list.pop()을 뒤집은 다음 마지막 요소를 제거하는 데 사용할 수 있습니다 .

l = [0, 1, 2, 3, 4]
l.reverse()
print l
[4, 3, 2, 1, 0]


l.pop()
0
l.pop()
1
l.pop()
2
l.pop()
3
l.pop()
4

5

목록의 첫 번째 요소 list.remove(a[0])pop제거하는 데 사용할 수도 있습니다 .

>>>> a=[1,2,3,4,5]
>>>> a.remove(a[0])
>>>> print a
>>>> [2,3,4,5]

3
OP는 최선의 방법을 묻지 않습니다. 이것은 동일한 달성을위한 또 다른 접근법입니다!
정점

1
예, 다른 답변보다 유리하지 않은 또 다른 접근법. 여러 가지 방법이 있습니다. 왜 대답하지 a.remove(a[1-1])않습니까? 다른 방법입니다.
Ned Batchelder

2
내 요점은 귀하의 답변이 다른 답변보다 나쁘고 추천 할 것이 없다는 것입니다. 이 답변을 다른 사람보다 사용할 이유가 없습니다. "다른 방법"이라고해서 여기에 추가 할 필요는 없습니다.
Ned Batchelder

4
@NedBatchelder 당신의 요점은 바보입니다. 이 특정 작업과 관련된 Python의 목록에 사용할 수있는 추가 방법이며 완전성을 위해주의해야합니다. 다른 한편으로는, 고안된 BS a [1-1] 예는 그렇지 않다. 그의 대답은 어떤 식 으로든 "다른 대답보다 더 나쁘지 않다"는 것은 말할 것도 없습니다.
Hejazzman

8
나는 내 질문에 섰다 : 이것은 이상하고 고안된 것처럼 보이며 그것을 추천 할 것이 없다. 실제로 첫 번째 문장은을 (를) 사용하여 i'th 요소를 제거 할 수 없기 때문에 오해의 소지가 있습니다 list.remove(a[i]). 중복 값을 사용하면 동일한 값을 가진 이전 요소를 찾아 i 대신에 해당 요소를 제거 할 수 있습니다.
Ned Batchelder

4

당신이 작업하는 경우 NumPy와 당신은 사용할 필요가 삭제 방법 :

import numpy as np

a = np.array([1, 2, 3, 4, 5])

a = np.delete(a, 0)

print(a) # [2 3 4 5]

1

"deque"또는 double ended queue라는 데이터 구조가 목록보다 빠르고 효율적입니다. 목록을 사용하고이를 변환하여 필요한 변환을 수행 할 수 있습니다. deque를 다시 목록으로 변환 할 수도 있습니다.

import collections
mylist = [0, 1, 2, 3, 4]

#make a deque from your list
de = collections.deque(mylist)

#you can remove from a deque from either left side or right side
de.popleft()
print(de)

#you can covert the deque back to list
mylist = list(de)
print(mylist)

Deque는 또한 목록의 어느 한 쪽이나 특정 색인에 요소를 삽입하는 것과 같은 매우 유용한 기능을 제공합니다. 디크를 회전 시키거나 반전시킬 수도 있습니다. 시도 해봐!!

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.