Python 리스트 값 삭제 방법 3가지

Python의 리스트에 값을 넣고 이용하다보면 값을 제거해야 하는 경우도 있습니다. Python 리스트 값 삭제 방법에 대해 살펴보겠습니다.

Python 리스트 값 삭제: 특정 index 삭제

특정 index의 값을 삭제하는 방법으로 list.pop()을 이용한 방법과 del 키워드를 사용한 방법 2가지를 살펴보겠습니다.

list.pop() 메서드로 특정 index의 값 삭제하기

list.pop() 메서드는 하나의 파라미터로 index 값을 전달합니다. 대괄호로 i를 감싸고 있으므로 i 값은 옵션으로 사용할 수 있으며, 파라미터 없이 사용하면 가장 마지막 항목을 삭제합니다.

list.pop([i])

우선 list.pop() 메서드로 마지막 항목인 ‘준철’을 제거하고, 그 다음은 두번째 항목인 ‘철수’를 삭제해 보도록 하겠습니다.

names = ['영희', '철수', '민영', '준철']
names.pop()
print(names)
names.pop(1)
print(names)
Python

실행한 결과입니다. 차례대로 ‘준철’이 삭제된 결과와, ‘철수’까지 삭제된 결과를 확인할 수 있습니다.

그림 1. Python 리스트 값 삭제: list.pop() 메서드 활용하여 마지막 항목 삭제 및 특정 index 삭제
그림 1. Python 리스트 값 삭제: list.pop() 메서드 활용하여 마지막 항목 삭제 및 특정 index 삭제

del 사용해서 특정 index의 값 삭제하기

del 키워드를 이용해서 특정 값을 인덱스를 사용하여 지정해 주면, list.pop(i)로 사용했던 것과 같이 리스트에서 인덱스에 해당하는 값만 삭제됩니다.

names = ['영희', '철수', '민영']
del names[1]
print(names)
Python

라인 2에서 보듯 인덱스 값 1은 두 번째에 있는 ‘철수’를 의미하므로, 아래와 같이 ‘철수’가 삭제된 것을 확인할 수 있습니다.

그림 2. Python 리스트 값 삭제: del 키워드 활용하여 특정 index 삭제
그림 2. Python 리스트 값 삭제: del 키워드 활용하여 특정 index 삭제

Python 리스트 특정 값 삭제

list.remove() 메서드를 이용하면 처음 나타나는 특정 값만 삭제할 수 있습니다. 아래 코드의 경우 numbers 리스트에서 처음 나타나는 숫자 3을 제거하려고 할 때 아래와 같이 사용합니다. 만약 해당하는 값이 없으면 ValueError가 발생합니다.

numbers = [1, 2, 3, 4, 3, 2, 1]
numbers.remove(3)
print(numbers)
Python

실행하면 아래와 같이 3번째에 있는 3만 삭제되고, 5번째에 있는 3은 삭제되지 않은 것을 확인할 수 있습니다.

그림 3. Python 리스트 값 삭제: list.remove() 메서드를 활용하여 특정 값 삭제
그림 3. Python 리스트 값 삭제: list.remove() 메서드를 활용하여 특정 값 삭제

이번에는 없는 값을 삭제하려고 시도해 보겠습니다.

numbers = [1, 2, 3, 4, 3, 2, 1]
numbers.remove(9)
Python

아래와 같이 ValueError가 발생하면서 오류가 생깁니다. 따라서 없는 값을 삭제하는 것에 대한 예외처리가 필요하겠죠.

그림 4. list.remove() 메서드로 없는 값을 삭제하려고 하면 ValueError 발생
그림 4. list.remove() 메서드로 없는 값을 삭제하려고 하면 ValueError 발생

Python 리스트 특정 값 모두 삭제

while문 사용

만약 모든 값을 다 제거하고 싶다면 어떻게 하면 될까요? 여기부터는 응용입니다. 여러가지 방법을 사용할 수 있습니다. filter()에 람다 함수를 사용하는 방법도 있고, for loop이나 while을 사용하는 방법도 있습니다.

numbers = [1, 2, 3, 4, 3, 2, 1]
while True:
  try:
    numbers.remove(3)
  except ValueError:
    break
print(numbers)
Python

위에서 언급한 예외처리도 다뤄볼 겸 저는 while문을 사용해서 구현해 보았습니다.

그림 5. while문을 사용하여 Python 리스트 특정 값 모두 삭제
그림 5. while문을 사용하여 Python 리스트 특정 값 모두 삭제

filter() 함수 사용

이번에는 간단히 filter() 함수에 람다 함수를 함께 사용해 보겠습니다. while문을 사용한 것보다 훨씬 간결하게 사용할 수 있습니다.

numbers = [1, 2, 3, 4, 3, 2, 1]
numbers = list(filter(lambda x: x != 3, numbers))
print(numbers)
Python

filter() 함수의 실행 결과는 원본 리스트에 영향을 주지 않습니다. 그래서 라인 2와 같이 numbers에 반환된 값을 넣어주었습니다. 아래와 같이 모든 3 값이 빠진 것을 확인할 수 있습니다.

그림 6. filter() 함수를 사용하여 Python 리스트 특정 값 모두 삭제
그림 6. filter() 함수를 사용하여 Python 리스트 특정 값 모두 삭제

for loop을 이용한 방법은 직접 한 번 해보시기 바랍니다.

Python 리스트 모든 값 삭제(리스트 비우기)

리스트의 모든 값을 삭제해서 리스트를 비우는 방법으로는 list.clear() 메서드와 del 키워드를 사용한 방법이 있습니다.

list.clear() 메서드로 리스트 비우기

list.clear() 메서드를 이용하면 모든 값이 삭제되어 해당 리스트는 리스트가 됩니다.

names = ['영희', '철수', '민영']
names.clear()
print(names)
Python

위의 코드를 실행하면 아래와 같이 빈 리스트가 된 것을 확인할 수 있습니다.

그림 7. Python 리스트 값 삭제: list.clear() 메서드로 리스트 비우기(모든 값 삭제)
그림 7. Python 리스트 값 삭제: list.clear() 메서드로 리스트 비우기(모든 값 삭제)

del 사용해서 리스트 비우기

list.clear() 메서드와 동일한 기능을 하는 del 키워드 사용법을 살펴보겠습니다.

names = ['영희', '철수', '민영']
del names[:]
print(names)
Python

리스트 뒤에 [:]을 사용하면 모든 값을 의미하죠. 따라서 모든 값이 삭제되어 빈 리스트가 되는 것을 아래 그림과 같이 확인할 수 있습니다.

그림 8. Python 리스트 값 삭제: del 메서드로 리스트 비우기(모든 값 삭제)
그림 8. Python 리스트 값 삭제: del 메서드로 리스트 비우기(모든 값 삭제)

관련 자료

Python의 Data Structure 문서를 참고했습니다.

같이 읽으면 좋은 글

Leave a Comment