반응형
list 자료형 내 중복 원소 찾기, 제거하기
파이썬의 리스트 자료형에서 2번 이상 등장한 원소들만 추출하는 방법과
중복을 제거하여 고유한 값들만 남기는 방법에 대해서 살펴보겠습니다.
리스트 내 2회 이상 등장 원소만 추출
for문을 통해 각 원소를 순회하며 처음 등장한 값인지 여부를 판별하여
이미 이전에 등장했던 원소들만 솎아내어 중복 원소만 추출이 쉽게 가능합니다.
a = [1, 2, 3, 1, 2, 4, 5, 1]
x = [] # 처음 등장한 값인지 판별하는 리스트
new_a = [] # 중복된 원소만 넣는 리스트
for i in a:
if i not in x: # 처음 등장한 원소
x.append(i)
else:
if i not in new_a: # 이미 중복 원소로 판정된 경우는 제외
new_a.append(i)
print(new_a) # [1, 2] # 2회 이상 등장한 값들만 담긴 리스트
혹은, 딕셔너리를 통하여 각 원소의 등장 횟수를 세어보는 방법도 있습니다.
이 방법으로는 n회 이상 등장한 값들만 추출하는 것으로도 확장이 가능합니다.
각 값들이 등장한 횟수를 세어 딕셔너리에 저장하는 코드는 아래와 같습니다.
b = ['a', 'a', 'b', 'b', 'c', 'd']
b_count = {} # 각 원소의 등장 횟수를 카운팅할 딕셔너리
for i in b:
try: # 이미 등장한 값의 경우
b_count[i] += 1
except: # 처음 등장한 값의 경우
b_count[i] = 1
print(b_count) # {'a': 2, 'b': 2, 'c': 1, 'd': 1}
반응형
이제 위의 딕셔너리 결과에서 2회(혹은 n회) 이상 등장했던 원소들만 골라내면 됩니다.
new_b = [] # 중복 원소만 넣을 리스트
for k, v in b_count.items():
if v >= 2: # n회 이상 등장한 원소로도 변경 가능
new_b.append(k)
print(new_b) # ['a', 'b']
리스트 내 중복 원소 제거
중복된 값을 제거하여 고유한 원소만 남기는 과정은
집합(set) 연산에서 중복을 골라내는 특징을 이용하면 아래 코드처럼 매우 간단하게 수행됩니다.
a = [1, 2, 3, 1, 2, 4, 5, 1]
a_unique = list(set(a))
print(a_unique) # [1, 2, 3, 4, 5]
또는, 중복 원소 추출 예제에서 사용했던 딕셔너리를 활용한 카운팅 방법도 적용이 가능합니다.
이 경우, 등장 횟수가 1인 원소들만 추출해주면 됩니다.
new_b = [] # 고유 원소만 넣을 리스트
for k, v in b_count.items():
if v == 1: # 1회 등장한 값만 포함
new_b.append(k)
print(new_b) # ['c', 'd']
'Python > 파이썬 기초' 카테고리의 다른 글
파이썬 join 함수 사용법 간단 정리 (2) | 2022.04.25 |
---|---|
파이썬 함수 안에 함수(중첩함수) 선언 예제, 변수 범위 원리 (0) | 2022.04.17 |
파이썬 복소수, 허수 자료형 선언 및 연산 예제 (2) | 2022.04.11 |