2023-08-15 21:41:53

파이썬 리스트에서 특정 요소를 제거할 때는 remove() 메서드를 사용할 수 있습니다.

 

리스트의 remove() 메서드로 특정 요소 삭제

fruits = ['banana', 'strawberry', 'watermelon', 'orange']
print(fruits)  # ['banana', 'strawberry', 'watermelon', 'orange']

fruits.remove("watermelon")
print(fruits)  # ['banana', 'strawberry', 'orange']

 

주석을 통해 확인할 수 있듯이 remove() 메서드의 인수로 전달한 watermelon이 리스트에서 제거되었습니다.

 

그런데 만약 제거하고 싶은 요소가 리스트 안에 여러 개가 있는 상황에서 remove 메서드를 사용하면 어떻게 될까요? 

 

fruits = ['banana', 'strawberry', 'watermelon', 'orange', 'watermelon']
print(fruits)  # ['banana', 'strawberry', 'watermelon', 'orange', 'watermelon']

fruits.remove("watermelon")
print(fruits)  # ['banana', 'strawberry', 'orange', 'watermelon']

 

보시다시피 첫번째로 만난 요소만 제거합니다. 

 

리스트 내 특정 요소 모두 제거하기

watermelon이라는 요소를 리스트 내에서 모두 제거하고 싶다면 다음과 같이 리스트 컴프리헨션을 사용하여 제거해줄 수 있습니다.

 

fruits = ['banana', 'strawberry', 'watermelon', 'orange', 'watermelon']
print(fruits)  # ['banana', 'strawberry', 'watermelon', 'orange', 'watermelon']

fruits = [fruit for fruit in fruits if fruit != 'watermelon']
print(fruits)  # ['banana', 'strawberry', 'orange']

 

watermelon이 모두 다 제거된 것을 확인하실 수 있습니다. watermelon이 아닌 요소들만 리스트에 담아준 것입니다. 리스트 컴프리헨션을 사용하면 그냥 여러 줄에 걸쳐 반복문을 사용한 것보다 속도적으로 훨씬 빠릅니다.