중복 요소가 포함된 하나의 리스트가 주어졌을 때, 중복을 제거한 요소들만 담고 있는 새로운 리스트를 만드는 것이 이번 글의 목표입니다. 파이썬에서는 간단한 반복문과 조건문만으로도 손쉽게 구현할 수 있으며, 내장 함수를 활용하면 더욱 짧은 코드로 처리할 수도 있습니다.
예시
입력 :: [2, 3, 4, 3, 4, 6, 78, 90] 출력 :: [2, 3, 4, 6, 78, 90]
알고리즘
1단계: 원본 리스트를 생성합니다. 2단계: 비어 있는 새로운 리스트를 생성합니다. 3단계: 원본 리스트의 모든 요소를 순회(traverse)합니다. 4단계: 현재 요소가 새 리스트에 존재하지 않으면 통과합니다. 5단계: 새 리스트에 해당 요소를 추가(append)합니다. 6단계: 최종적으로 새 리스트를 화면에 출력합니다.
예제 코드
# 중복 요소를 제거하는 함수
def remove_duplicate_ele(A):
newlist = []
for n in A:
if n not in newlist:
newlist.append(n)
return newlist
# 드라이버 코드
A = list()
n = int(input("리스트의 크기를 입력하세요 :: "))
print("숫자를 입력하세요 ::")
for i in range(n):
k = int(input(""))
A.append(int(k))
print("새로운 리스트 ::>", remove_duplicate_ele(A))
실행 결과
리스트의 크기를 입력하세요 :: 5 숫자를 입력하세요 :: 10 20 30 20 10 새로운 리스트 ::> [10, 20, 30]
더 간단한 방법: set() 활용하기
파이썬에서는 집합(set) 자료형을 이용하면 단 한 줄로 중복을 제거할 수 있습니다. 다만 set()은 요소의 순서를 보장하지 않으므로, 원래 입력 순서를 유지하고 싶다면 dict.fromkeys()를 함께 사용하는 것이 좋습니다.
# set()을 이용한 방법 (순서 미보장) result = list(set(A)) # 순서를 유지하면서 중복 제거 (Python 3.7+) result = list(dict.fromkeys(A))
두 방식 모두 동일하게 중복을 제거하지만, 데이터의 양이 많을 경우 set() 기반 방식이 해시 연산을 활용하기 때문에 일반적으로 더 빠른 성능을 보여줍니다.