Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬(Python)으로 리스트에서 중복 요소 제거하는 프로그램

중복 요소가 포함된 하나의 리스트가 주어졌을 때, 중복을 제거한 요소들만 담고 있는 새로운 리스트를 만드는 것이 이번 글의 목표입니다. 파이썬에서는 간단한 반복문과 조건문만으로도 손쉽게 구현할 수 있으며, 내장 함수를 활용하면 더욱 짧은 코드로 처리할 수도 있습니다.

예시

입력 :: [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() 기반 방식이 해시 연산을 활용하기 때문에 일반적으로 더 빠른 성능을 보여줍니다.