Set을 활용하여 List의 특정 원소 모두 제거하기

이찬·2023년 8월 1일
0
post-thumbnail

리스트에서 특정 값들을 모두 제거하고 싶을 때가 있다.

  • remove라는 메서드는 특정 값을 제거하는 기능이 있지만, 최초로 발견되는 단 하나의 요소만 제거한다.

    li = [1, 3, 5, 5, 7, 7, 8] 인 리스트가 존재할 때 li.remove(5) 를 하면 [1, 3, 5, 7, 7, 8]이 된다. 즉, 5가 여러 번 등장하면 모두 지우지 못하고 최초로 발견된 5만 제거가 된 것이다.

  • 5를 모두 제거하고 싶다면 위와 같은 코드를 작성해 제거 할 수도 있다.
  • 하지만, 중복된 데이터가 많을 때 여러 번 반복하게 되면 굉장히 시간 소모가 많아진다.

모든 특정한 요소 제거하는 방법

 li = [1,3,4,5,7,7,7,8,9]
 remove_set = {5,7}

 li = [i for i in li if i not in remove_set]
 print(i)
 # result : [1,3,8]
  • 제거하고자 하는 데이터들을 remove_set에 저장하고, remove_set에 없는 데이터만 새로운 리스트에 저장하여 특정 값을 제거하는 효과를 낼 수 있는 것이다.
  • 훨씬 시간적으로 효율적인 방법이 되기 때문에 코딩테스트에서 특정 요소를 모두 제거해야 할 때 사용하면 유용할 스킬이다.
profile
Kyunghee univ. IE 21

0개의 댓글