Recent Posts
Tags
- 파이썬 사칙연산
- python dictionary
- javascript array unshift
- 파이썬 입문
- 프로그래밍
- 동기 뜻
- 제이 쿼리
- jupyter python
- python slicing
- 웹 프로그래밍
- html css
- 자바스크립트
- 비동기 코드
- 카카오 애드핏
- kakao Adfit
- 파이썬 강의 사이트
- javascript 날짜 포맷 변환
- 파이썬 기초
- 웹 프로그래밍 기초
- javascript array method
- python index
- 프로그래밍 파이썬
- 코딩 파이썬 기초
- JavaScript
- 파이썬 학원
- javascript array add
- 리엑트 삼항연산자
- 동기 코드
- 국비 지원 프로그래밍
- 국비 지원 파이썬
- $(document).ready()
- javascript date format
- javascript array remove
- javascript array shift
- jQuery
- HTML 기초
- Python3
- 파이썬 온라인 강의
- javascript array splice
- 파이썬 강의
- jquery loaded event
- javascript example
- javascript array map
- 파이썬 세트
- 비동기 뜻
- 파이썬 ide 추천
- HTML
- python 다운로드
- javascript array push
- 파이썬 배우기
코딩이 즐겁다
[파이썬 기초] 세트 (Set) 타입 사용법 갓벽 가이드 본문
반응형
파이썬 세트 (Set) 타입이란?
파이썬(Python)에서 세트(Set)는 순서가 없고, 중복을 허용하지 않는 데이터 타입입니다. 세트는 집합 개념을 기반으로 설계되었으며, 중복된 값을 제거하거나, 교집합, 합집합, 차집합 등의 집합 연산을 수행할 때 매우 유용합니다.
세트 타입 주요 내용
생성 방법 | set(), {값1, 값2, ...} |
요소 추가 | add('값'), update() |
요소 삭제 | remove('값'), discard('값') |
교집합 | &, intersection() |
합집합 | |, union() |
차집합 | -, difference() |
- 중복 허용 안 함: 동일한 값을 여러 번 저장하려 해도 하나만 저장됩니다.
- 순서 없음: 세트는 순서가 없기 때문에 인덱싱이나 슬라이싱이 불가능합니다.
- 가변성: 세트 자체는 변경할 수 있지만, 내부 요소는 해시 가능(hashable) 해야 합니다. 즉, 변경할 수 없는 자료형(문자열, 숫자, 튜플 등)만 세트의 요소로 사용할 수 있습니다.
세트 생성
세트는 중괄호 {} 또는 set() 함수를 사용하여 생성합니다. 빈 세트를 생성하려면 set()을 사용해야 합니다.
e = set()
print(se, type(se)) # set() <class 'set'>
se = {}
print(se, type(se)) # {} <class 'dict'> >>> 중괄호만 사용하면 딕셔너리 타입으로 인식
se = {1}
print(se, type(se)) # {1} <class 'set'> >>> 중괄호 안에 요소 입력시에만 세트 타입으로 인식
세트 타입 변환
list() 함수와 tuple() 함수를 사용하여 세트 타입을 다른 타입으로 형변환 할 수 있습니다.
se = {1, 2, 3}
li = list(se)
print(li, type(li)) # [1, 2, 3] <class 'list'>
tu = tuple(se)
print(tu, type(tu)) # (1, 2, 3) <class 'tuple'>
세트 주요 집합 연산
연산 | 기호 및 메서드 | 설명 | 예제 |
합집합 | | 또는 union() | 두 세트의 모든 요소 포함 | a | b 또는 a.union(b) |
교집합 | & 또는 intersection() | 두 세트의 공통 요소 | a & b 또는 a.intersection(b) |
차집합 | - 또는 difference() | 첫 번째 세트에서 두 번째 세트를 뺀 나머지 | a - b 또는 a.difference(b) |
대칭 차집합 | ^ 또는 symmetric_difference() | 두 세트의 공통되지 않은 요소 | a ^ b 또는 a.symmetric_difference(b) |
세트 교집합
'&' 기호와 intersection() 메서드를 통해 두 세트 타입의 교집합 요소들을 구할 수 있습니다.
se1 = {1, 2, 3}
se2 = {3, 4, 5}
se3 = se1 & se2
print(se3) # {3}
se3 = se1.intersection(se2)
print(se3) # {3}
세트 합집합
'|' 기호와 union() 메서드를 통해 두 세트 타입의 합집합 요소들을 구할 수 있습니다.
se1 = {1, 2, 3}
se2 = {3, 4, 5}
se3 = se1 | se2
print(se3) # {1, 2, 3, 4, 5}
se3 = se1.union(se2)
print(se3) # {1, 2, 3, 4, 5}
세트 차집합
'-' 기호와 difference() 메서드를 통해 두 세트 타입의 차집합 요소들을 구할 수 있습니다.
se1 = {1, 2, 3}
se2 = {3, 4, 5}
se3 = se1 - se2
print(se3) # {1, 2}
se3 = se1.difference(se2)
print(se3) # {1, 2}
세트 부분 집합과 상위 집합
메서드 | 설명 | 예제 |
issubset() | 모든 요소가 다른 세트에 포함되어 있는지 확인 | a.issubset(b) |
issuperset() | 다른 세트의 모든 요소를 포함하는지 확인 | a.issuperset(b) |
isdisjoint() | 두 세트가 공통 요소가 없는지 확인 | a.isdisjoint(b) |
예제:
a = {1, 2, 3}
b = {1, 2, 3, 4, 5}
c = {5, 6}
print(a.issubset(b)) # True (a는 b의 부분 집합)
print(b.issuperset(a)) # True (b는 a의 상위 집합)
print(a.isdisjoint(c)) # True (a와 c는 공통 요소가 없음)
세트 메서드
메서드 | 설명 | 예제 |
add(x) | 요소 x를 추가 | s.add(10) |
update(iterable) | 여러 요소를 추가 | s.update([10, 20]) |
remove(x) | 요소 x를 제거 (없으면 오류 발생) | s.remove(10) |
discard(x) | 요소 x를 제거 (없으면 오류 없음) | s.discard(10) |
pop() | 임의의 요소를 제거하고 반환 | s.pop() |
clear() | 모든 요소 제거 | s.clear() |
copy() | 세트를 복사 | s2 = s.copy() |
예제:
s = {1, 2, 3}
s.add(4) # {1, 2, 3, 4}
s.update([5, 6]) # {1, 2, 3, 4, 5, 6}
s.remove(3) # {1, 2, 4, 5, 6}
s.discard(10) # {1, 2, 4, 5, 6} (오류 발생 안 함)
print(s.pop()) # 임의의 요소 제거 (출력값은 실행마다 다를 수 있음)
s.clear() # set() (빈 세트)
세트 요소 추가
세트 타입은 add() 메서드와 update() 메서드를 통해 요소를 추가할 수 있습니다.
se = {1, 2, 3}
se.add(4)
print(se) # {1, 2, 3, 4}
se.update([3, 4, 5])
print(se) # {1, 2, 3, 4, 5}
세트 요소 삭제
세트 타입은 discard() 메서드와 remove() 메서드를 통해 요소를 제거할 수 있습니다.
se = {'a', 'b', 'c', 'd'}
se.discard('a')
print(se, type(se)) # {'c', 'b', 'd'} <class 'set'>
se.remove('b')
print(se, type(se)) # {'c', 'd'} <class 'set'>
세트와 반복문
세트는 순서가 없으므로 요소를 반복할 때 출력 순서는 예측할 수 없습니다.
s = {"apple", "banana", "cherry"}
for item in s:
print(item)
# 예: 실행 결과는 {'apple', 'cherry', 'banana'} 순서대로 출력될 수 있음
불변 세트 만들기 (Frozen set)
💡 Frozen Set이란?
- Frozen Set은 일반 세트와 동일한 특성을 가지지만, 불변성(immutable)을 가지는 세트입니다.
- 요소를 변경하거나 추가/삭제할 수 없습니다.
- 딕셔너리의 키 또는 다른 세트의 요소로 사용 가능합니다.
Frozen Set 생성
fs = frozenset([1, 2, 3, 4])
print(fs) # frozenset({1, 2, 3, 4})
# 수정 불가
# fs.add(5) # 오류 발생: 'frozenset' object has no attribute 'add'
코즐
파이썬을 배우고 싶은 사람은 누구나 파이썬 학원(국비 지원 파이썬 학원)에 가지 않고도 파이썬 공부를 하면서 실력을 쌓아나갈 수 있다고 생각합니다.
파이썬 온라인 강의 자료를 올리면서 누구나 쉽게 파이썬을 공부하실 수 있도록 최선을 다해서 설명하도록 하겠습니다.
반응형
'Python' 카테고리의 다른 글
[파이썬 입문] 딕셔너리 타입 추가 및 합치는 방법 (106) | 2025.01.31 |
---|---|
[파이썬 기초] 딕셔너리(Dictionary) 사용법 갓벽 가이드 (79) | 2025.01.25 |
[파이썬 기초] 튜플 (Tuple) 타입 사용법 갓벽 가이드 (84) | 2025.01.23 |
[파이썬 기초] 리스트(List) 타입 사용법 갓벽 가이드 (28) | 2025.01.23 |
[파이썬 기초] 문자열 인덱싱과 슬라이싱 (Indexing, Slicing) 갓벽 가이드 (37) | 2025.01.22 |