이 글에서는 숫자 리스트에 포함된 모든 중복 값을 출력하는 방법을 알아봅니다. 즉, 리스트 안에서 두 번 이상 등장하는(고유하지 않은) 숫자들을 모두 찾아내는 것이 목표입니다.
예제
입력: given_list = [3, 6, 9, 12, 3, 30, 15, 9, 45, 36, 12] 출력: desired_output = [3, 9, 12] 입력: given_list = [-27, 4, 29, -27, -2, -99, 123, 499, -99] 출력: desired_output = [-27, -99]
다음은 주어진 리스트에서 중복 요소를 찾아내는 Python 코드입니다.
lst = [3, 6, 9, 12, 3, 30, 15, 9, 45, 36, 12, 12]
dupItems = []
uniqItems = {}
for x in lst:
if x not in uniqItems:
uniqItems[x] = 1
else:
if uniqItems[x] == 1:
dupItems.append(x)
uniqItems[x] += 1
print(dupItems)실행 결과
[3, 9, 12]
코드 동작 원리
이 코드의 핵심 아이디어는 다음과 같습니다.
- uniqItems: 각 숫자가 몇 번 등장했는지 개수를 저장하는 딕셔너리입니다.
- dupItems: 중복으로 확인된 숫자를 담는 리스트입니다.
- 리스트를 순회하면서 처음 만나는 숫자는 딕셔너리에 1로 기록합니다. 이미 존재하는 숫자이면서 등장 횟수가 정확히 1일 때만 중복 리스트에 추가하므로, 같은 숫자가 세 번 이상 나와도 결과에는 한 번만 포함됩니다.
위 프로그램은 정수 리스트뿐만 아니라 문자열 등 다른 자료형에도 동일하게 적용할 수 있습니다.
입력: given_list = ['abc', 'def', 'raj', 'zack', 'abc', 'raj'] 출력: output_returned = ['abc', 'raj']