Recent Posts
Recent Comments
라떼는말이야
[Python] 리스트의 특정 원소 모두 제거하기 본문
반응형
Python에서 리스트는 굉장히 중요하고 상징적인 자료형이다.
코딩테스트를 할 때 리스트에서 특정 값들을 모두 제거하고 싶을 때가 있다.
리스트에는 remove라는 메서드가 있어 특정 값을 제거할 수 있는데 최초로 발견되는 하나만 제거한다.
예를 들어 li = [1, 3, 5, 5, 7, 7, 8] 인 리스트가 존재할 때 li.remove(5) 를 하면 [1, 3, 5, 7, 7, 8]이 된다.
즉, 5가 여러 번 등장하면 모두 지우지 못하고 최초로 발견된 5만 제거가 된 것이다.
5를 모두 제거하고 싶다면 위와 같은 코드를 작성해 제거 할 수도 있다.
하지만 remove() 메서드는 시간 복잡도가 O(N)이고, 중복된 데이터가 많을 때 여러 번 반복하게 되면 굉장히 시간 소모가 많아진다.
그래서 다음과 같은 방법을 사용하면 리스트를 한 번만 순회하여 제거할 수 있다.
모든 특정한 요소 제거하는 방법
li = [1, 3, 5, 5, 7, 7, 8]
remove_set = {3, 5}
li = [i for i in li if i not in remove_set]
print(li)
위 코드는 리스트 컴프리헨션을 아는 사람이라면 어렵지 않게 해석할 수 있다.
제거하고자 하는 데이터들을 remove_set에 저장하고, remove_set에 없는 데이터만 새로운 리스트에 저장하여 특정 값을 제거하는 효과를 낼 수 있는 것이다.
훨씬 시간적으로 효율적인 방법이 되기 때문에 코딩테스트에서 특정 요소를 모두 제거해야 할 때 사용하면 유용할 스킬이다.
반응형
'알고리즘' 카테고리의 다른 글
[solved.ac 실버3] 14426_접두사 찾기 (파이썬, 문자열) (0) | 2022.06.29 |
---|---|
[Python] 계수 정렬 (Count sort) (2) | 2021.08.21 |
[Python] Quick sort. 파이썬에서 간단히 퀵 정렬 구현 (3) | 2021.08.21 |
[프로그래머스 lv2] 괄호 변환 (파이썬) (0) | 2021.07.23 |
깊이 우선 탐색(DFS, Depth First Search) 파이썬 구현 (0) | 2021.06.26 |
너비 우선 탐색(BFS, Breadth First Search) 파이썬 구현 (0) | 2021.05.23 |
투포인터(two pointer) 파이썬 구현 (0) | 2021.05.23 |
Comments