Python의 목록(배열)에서 요소 제거: clear(), pop(), remove(), del

사업

Python에서 목록 유형의 목록(배열)에서 요소를 제거하려면 목록 메서드 clear(), pop() 및 remove()를 사용합니다. 인덱스 또는 슬라이스를 사용하여 목록의 위치와 범위를 지정한 다음 del 문을 사용하여 삭제할 수도 있습니다.

다음 정보가 여기에 제공됩니다.

  • 모든 요소 제거:clear()
  • 지정된 위치의 요소를 삭제하고 해당 값을 가져옵니다.:pop()
  • 지정된 값을 가진 요소를 검색하고 첫 번째 요소를 제거합니다.:remove()
  • 인덱스 슬라이스에서 위치와 범위를 지정하여 삭제:del
  • 기준을 충족하는 여러 요소를 일괄 삭제합니다.:목록 포함 표시

목록은 다른 유형의 데이터를 저장할 수 있으며 배열과 완전히 다릅니다. 메모리 크기나 메모리 주소가 필요한 프로세스 또는 대규모 데이터의 수치 계산을 위해 배열을 처리하려는 경우 배열(표준 라이브러리) 또는 NumPy를 사용합니다.

모든 요소 제거:clear()

list 메소드 clear()에서 모든 요소가 제거되어 빈 목록이 생성됩니다.

l = list(range(10))
print(l)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

l.clear()
print(l)
# []

지정된 위치의 요소를 삭제하고 해당 값을 가져옵니다.:pop()

목록의 pop() 메서드는 지정된 위치의 요소를 삭제하고 해당 요소의 값을 가져오는 데 사용할 수 있습니다.

첫 번째(초기) 숫자는 0입니다.

l = list(range(10))
print(l)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

print(l.pop(0))
# 0

print(l)
# [1, 2, 3, 4, 5, 6, 7, 8, 9]

print(l.pop(3))
# 4

print(l)
# [1, 2, 3, 5, 6, 7, 8, 9]

음수 값을 사용하여 끝(마지막)에서 위치를 지정할 수도 있습니다. 끝(마지막)은 -1입니다.

print(l.pop(-2))
# 8

print(l)
# [1, 2, 3, 5, 6, 7, 9]

인수가 생략되고 위치가 지정되지 않으면 끝(마지막)에 있는 요소가 삭제됩니다.

print(l.pop())
# 9

print(l)
# [1, 2, 3, 5, 6, 7]

존재하지 않는 위치를 지정하면 오류가 발생합니다.

# print(l.pop(100))
# IndexError: pop index out of range

첫 번째 요소를 제거하는 pop(0)은 다음과 같은 비용이 필요하며 효율적인 작업이 아닙니다. 목록에 대한 다양한 작업의 계산 복잡성에 대해서는 공식 위키의 다음 페이지를 참조하십시오.
O(n)

O(1)deque 유형은 표준 라이브러리 컬렉션 모듈에서 이 비용으로 요소를 맨 위로 삭제하는 유형으로 제공됩니다. 예를 들어 데이터를 큐(FIFO)로 취급하려면 deque를 사용하는 것이 더 효율적입니다.

지정된 값을 가진 요소를 검색하고 첫 번째 요소를 제거합니다.:remove()

list 메소드 remove()는 지정된 값과 동일한 값을 가진 요소를 검색하고 첫 번째 요소를 제거하는 데 사용할 수 있습니다.

l = ['Alice', 'Bob', 'Charlie', 'Bob', 'Dave']
print(l)
# ['Alice', 'Bob', 'Charlie', 'Bob', 'Dave']

l.remove('Alice')
print(l)
# ['Bob', 'Charlie', 'Bob', 'Dave']

목록에 지정된 값과 일치하는 요소가 두 개 이상 있으면 첫 번째 요소만 제거됩니다.

l.remove('Bob')
print(l)
# ['Charlie', 'Bob', 'Dave']

존재하지 않는 값을 지정하면 오류가 발생합니다.

# l.remove('xxx')
# ValueError: list.remove(x): x not in list

인덱스 슬라이스에서 위치와 범위를 지정하여 삭제:del

del 문을 사용하여 목록에서 요소를 제거할 수도 있습니다.

인덱스로 삭제할 요소를 지정합니다. 첫 번째(초기) 인덱스는 0이고 마지막(최종) 인덱스는 -1입니다.

l = list(range(10))
print(l)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

del l[0]
print(l)
# [1, 2, 3, 4, 5, 6, 7, 8, 9]

del l[-1]
print(l)
# [1, 2, 3, 4, 5, 6, 7, 8]

del l[6]
print(l)
# [1, 2, 3, 4, 5, 6, 8]

슬라이스로 범위를 지정하면 한 번에 여러 요소를 삭제할 수 있습니다.

l = list(range(10))
print(l)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

del l[2:5]
print(l)
# [0, 1, 5, 6, 7, 8, 9]

l = list(range(10))
del l[:3]
print(l)
# [3, 4, 5, 6, 7, 8, 9]

l = list(range(10))
del l[4:]
print(l)
# [0, 1, 2, 3]

l = list(range(10))
del l[-3:]
print(l)
# [0, 1, 2, 3, 4, 5, 6]

전체 범위를 지정하고 모든 요소를 ​​삭제할 수도 있습니다.

l = list(range(10))
del l[:]
print(l)
# []

[start:stop:step]이런 식으로 슬라이스의 범위를 지정하고 증분 단계를 지정하면 여러 점프 요소를 한 번에 삭제할 수 있습니다.

l = list(range(10))
del l[2:8:2]
print(l)
# [0, 1, 3, 5, 7, 8, 9]

l = list(range(10))
del l[::3]
print(l)
# [1, 2, 4, 5, 7, 8]

슬라이싱에 대한 자세한 내용은 다음 문서를 참조하세요.

기준을 충족하는 여러 요소를 일괄 삭제합니다.:목록 포함 표시

조건을 만족하는 요소를 제거하는 과정은 조건을 만족하지 않는 요소를 남겨(추출) 하는 과정과 동일합니다. 이러한 종류의 처리에는 목록 이해 표기법이 사용됩니다.

홀수 또는 짝수 요소를 제거하는 예(= 짝수 또는 홀수 요소를 남김)는 다음과 같습니다.
%이것은 나머지 연산자입니다.
i % 2
이것은 i를 2로 나눈 나머지입니다.

목록 이해 표기법에서 새 목록이 생성됩니다. 지금까지 도입된 목록 유형 방법과 달리 원래 목록은 변경되지 않습니다.

l = list(range(10))
print(l)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

print([i for i in l if i % 2 == 0])
# [0, 2, 4, 6, 8]

print([i for i in l if i % 2 != 0])
# [1, 3, 5, 7, 9]

print(l)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

다른 예. 조건식에 따라 다양한 처리가 가능하다.

l = ['Alice', 'Bob', 'Charlie', 'Bob', 'David']
print(l)
# ['Alice', 'Bob', 'Charlie', 'Bob', 'David']

print([s for s in l if s != 'Bob'])
# ['Alice', 'Charlie', 'David']

print([s for s in l if s.endswith('e')])
# ['Alice', 'Charlie']

중복 요소를 제거하려면 집합 집합 유형을 사용합니다.

print(list(set(l)))
# ['David', 'Alice', 'Charlie', 'Bob']