[Python TIL] SET 함수: 중복 제거, 메소드
Python에서 데이터를 다룰 때 중복을 없애고, 집합 연산을 하고 싶다면?
바로 set(집합)을 사용하면 된다.
이 글에서는 set의 기본 개념부터 주요 메소드, 함수 사용법, 그리고 JSON과 딕셔너리 변환까지 한 번에 정리해보겠다.
🧩 set이란?
Python의 set은 중복을 허용하지 않고, 순서가 없는 자료형이다. 수학의 집합(set) 개념과 유사하다.
my_set = {1, 2, 3, 3, 4}
print(my_set) # 출력: {1, 2, 3, 4}
❗ 중복된
3은 자동으로 제거됨
🛠️ set을 만드는 방법
1. 중괄호 {} 사용
fruits = {"apple", "banana", "apple"}
print(fruits) # 출력: {'apple', 'banana'}
2. set() 함수로 리스트나 문자열 변환
numbers = set([1, 2, 3, 2])
print(numbers) # 출력: {1, 2, 3}
chars = set("hello")
print(chars) # 출력: {'h', 'e', 'l', 'o'}
📌 set의 주요 특징
| 특징 | 설명 |
| 중복 불가 | 같은 값을 여러 번 넣어도 한 번만 저장됨 |
| 순서 없음 | 인덱싱 불가 (리스트처럼 set[0] 못함) |
| 변경 가능 | 원소 추가/삭제 가능 |
| 집합 연산 가능 | 합집합, 교집합, 차집합 가능 |
🧰 주요 메소드 정리
🔹 add() – 하나의 원소 추가
my_set = {1, 2}
my_set.add(3)
print(my_set) # 출력: {1, 2, 3}
🔹 update() – 여러 원소 한꺼번에 추가
my_set.update([4, 5])
print(my_set) # 출력: {1, 2, 3, 4, 5}
🔹 remove() – 특정 원소 삭제 (없으면 에러 발생)
my_set.remove(2)
print(my_set) # 출력: {1, 3, 4, 5}
# my_set.remove(100) # 에러 발생!
🔹 discard() – 특정 원소 삭제 (없어도 에러 없음)
my_set.discard(100) # 조용히 무시
📏 set에서 사용할 수 있는 함수들
🔸 in 연산자
num_set = {1, 2, 3}
print(3 in num_set) # 출력: True
print(5 in num_set) # 출력: False
🔸 len() 함수 – set의 크기(원소 개수)
print(len(num_set)) # 출력: 3
연습 문제
데이터의 집합 나타내기
파이썬의 set은 집합을 나타내는 데이터 구조입니다. 집합은 순서와 중복이 없는 데이터 구조로, 데이터 분석에서 중복을 무시해야 하는 경우에 사용할 수 있습니다.
예로, 수강생 명단이 주어졌을 때 set을 이용하면 학생 유형을 쉽게 구할 수 있습니다.
A 수업과 B 수업 둘 중 하나 이상을 수강하는 학생 수 구하기
A 수업과 B 수업을 모두 수강하는 학생 수 구하기
데이터 분석에 이용하기
작품 A와 B를 모두 시청한 사람의 수, 둘 중 하나만 시청한 사람의 수를 이용하면 두 작품의 유사도를 유추할 수 있습니다. 리스트와 딕셔너리 대신 집합을 사용하면 이를 훨씬 쉽게 구할 수 있습니다.
집합을 생성하고 원소를 추가, 삭제하는 함수를 연습해 보세요.
# 정수 3과 5를 원소로 갖는 새로운 집합을 생성합니다.
my_set = {3,5}
# 정수 7을 my_set에 추가합니다.
my_set.add(7)
# new_numbers 리스트의 원소를 my_set에 추가합니다.
new_numbers = [1, 2, 3, 4, 5]
my_set.update(new_numbers)
# my_set에서 짝수를 모두 제거합니다.
my_set = {num for num in my_set if num%2 != 0}
🎯 마무리 요약
| 항목 | 설명 |
set 특징 | 중복 제거, 순서 없음 |
| 주요 메소드 | add, update, remove, discard |
| 사용 가능한 함수 | in, len |