📚 중복 없는 셋(Set) & 자료구조 총정리(변환/언패킹)
도입부 오늘은 파이썬 자료구조 시리즈의 마지막! 수학 시간에 배웠던 '집합'을 그대로 코드로 옮겨놓은 **셋(Set)**과, 지금까지 배운 자료구조들을 자유자재로 다루는 활용법을 총정리해 보겠습니다.
1. 셋 (Set): 중복을 거부하는 자유로운 영혼
셋은 수학의 '집합'과 똑같습니다. 딱 2가지만 기억하세요.
- 순서가 없다: 그래서 인덱싱(s[0])이나 슬라이싱을 할 수 없습니다.
- 중복을 허락하지 않는다: 똑같은 값을 여러 번 넣어도 알아서 하나만 남깁니다.
- 만들기: 딕셔너리처럼 중괄호 { }를 쓰지만, 키 없이 값만 콤마로 나열합니다.
s1 = {1, 2, 3, 3, 3, 4}
print(s1) # {1, 2, 3, 4} (중복된 3이 하나로 합쳐짐!)
# 빈 Set 만들기 (주의!)
# s = {} 이렇게 하면 빈 딕셔너리가 만들어집니다.
s2 = set() # 이렇게 해야 빈 셋이 만들어집니다.
💡 셋(Set)의 주요 메소드와 집합 연산
- add(값): 값 1개 추가 / update(리스트): 여러 개 한 번에 추가
- remove(값): 콕 찝어서 값 삭제
- 집합 연산자: 교집합(&), 합집합(|), 차집합(-) 기호를 그대로 사용할 수 있습니다!
2. 자료구조 대입 (Unpacking, 언패킹)
리스트나 튜플 안에 들어있는 여러 개의 값을 각각의 변수에 한 번에 쪼개서 넣는 마법 같은 기능입니다. 변수 개수와 데이터 개수가 딱 맞아야 합니다.
a, b, c = [10, 20, 30] # a에는 10, b에는 20, c에는 30이 들어갑니다!
3. 자료구조 변환 함수 (Type Casting)
지금까지 배운 자료구조들은 서로 자유롭게 변신할 수 있습니다.
- list(데이터): 리스트로 변환
- tuple(데이터): 튜플로 변환
- set(데이터): 셋으로 변환
🔥 실전 초강력 꿀팁! (데이터 중복 제거하기) [1, 2, 2, 3, 3, 3] 이라는 리스트에서 중복을 없애고 싶을 땐 어떻게 할까요? 복잡하게 코드를 짤 필요 없이, 잠깐 Set으로 변신시켰다가 다시 List로 되돌리면 됩니다! l = list(set([1, 2, 2, 3, 3, 3])) ➔ 결과: [1, 2, 3]
*참고: 리스트, 튜플, 딕셔너리, 셋 처럼 안에 여러 값을 품고 있어서 반복문(for문)으로 하나씩 꺼내볼 수 있는 객체들을 묶어서 **'Iterable(반복 가능한 객체)'*이라고 부릅니다.
📝 3편 복습 퀴즈
Q1. 셋(Set) 자료구조의 가장 큰 특징 두 가지로 올바르게 짝지어진 것은?
① 순서가 있고, 중복을 허용한다. ② 순서가 없고, 중복을 허용한다. ③ 순서가 있고, 중복을 허용하지 않는다. ④ 순서가 없고, 중복을 허용하지 않는다.
Q2. 아무런 데이터도 들어있지 않은 '빈 셋(Empty Set)'을 만들기 위한 올바른 코드는?
① s = {} ② s = [] ③ s = set() ④ s = empty()
Q3. 셋(Set)에서 두 집합의 공통된 원소만 뽑아내는 '교집합'을 구하려고 할 때 사용하는 연산자 기호는?
① | ② & ③ - ④ +
Q4. 리스트나 튜플의 원소들을 여러 개의 개별 변수에 한 번에 나누어 담는 파이썬의 편리한 문법을 무엇이라고 하나요?
(예: a, b, c = [1, 2, 3])
① 패킹 (Packing) ② 슬라이싱 (Slicing) ③ 형변환 (Type Casting) ④ 대입 / 언패킹 (Unpacking)
Q5. 어떤 리스트에 들어있는 엄청나게 많은 데이터 중에서 '중복된 값'을 가장 빠르고 쉽게 싹 제거하는 방법으로 알맞은 함수 조합은?
① list(tuple(리스트)) ② dict(list(리스트)) ③ list(set(리스트)) ④ set(tuple(리스트))
💡 정답 확인: Q1: ④ / Q2: ③ ({}는 빈 딕셔너리를 만듭니다) / Q3: ② / Q4: ④ / Q5: ③ (Set의 중복 제거 특성을 이용한 대표적인 스킬입니다)
'두두 IT > 파이썬' 카테고리의 다른 글
| UV VENV 가상환경 구성(2) - VSCode (0) | 2026.04.29 |
|---|---|
| UV VENV 가상환경 구성(1) - 파워쉘과 VSCode (0) | 2026.04.29 |
| [PYTHON 3-2] 변하지 않는 Tuple & 키-값 쌍의 Dictionary (0) | 2026.04.15 |
| [PYTHON 3-1] 여러 데이터를 하나로! 리스트(List) (0) | 2026.04.15 |
| [PYTHON 2-3] 문자열(String)과 포매팅 (0) | 2026.04.14 |