세트 자료형
✒️ 2025-05-19 10:27 내용 수정
Do it! 점프 투 파이썬(2017년 발행) 내용을 정리
중복을 허용하지 않고 순서가 없는 집합을 관리하기 위한 자료형
- Java의 Set(Set 인터페이스)와 비슷하다.
- 중복을 허용하지 않기 때문에 필터로 사용될 수 있다.
- 세트를 생성하려면
set()함수에 리스트나 문자열 등을 입력한다.
>>> a = set([1, 2, 3])
>>> a
{1, 2, 3}
>>> b = set("Hello")
>>> b
{'o', 'l', 'H', 'e'}
>>> c = set()
>>> c
set()
- 세트는 순서가 없기 때문에 인덱싱을 통해 요소값을 얻을 수 없으며, 세트 자료형에 저장된 값을 인덱싱으로 접근하고 싶다면 리스트나 튜플로 변환한 후에 해야 한다.
>>> a = set([1, 2, "a", "b"])
>>> b = list(a)
>>> b
[1, 2, 'b', 'a']
>>> b[0]
1
세트 연산
교집합 구하기
- 교집합으로 두 개의 세트 자료형에 공통으로 있는 값을 가진 세트를 얻을 수 있다.
&연산자 또는intersection()함수를 사용하여 얻을 수 있다.
>>> a = set([1, 2])
>>> b = set([2, 3, 4])
>>> a & b
{2}
>>> type(a&b)
<class 'set'>
>>> a.intersection(b)
{2}
합집합 구하기
- 합집합으로 두 개의 세트 자료형에 있는 모든 값을 합한 세트를 얻을 수 있다.
|연산자나union()함수를 사용하여 얻을 수 있다.- 합집합 연산 시 중복된 값은 1개만 표현된다.
>>> a = set([1, 2])
>>> b = set([2, 3, 4])
>>> a | b
{1, 2, 3, 4}
>>> a.union(b)
{1, 2, 3, 4}
차집합 구하기
- 차집합으로 한 세트에서 다른 세트와 교집합인 값을 제외한 세트를 얻을 수 있다.
-연산자나difference()함수를 사용하여 얻을 수 있다.
>>> a = set([1, 2])
>>> b = set([2, 3, 4])
>>> a - b
{1}
>>> a.difference(b)
{1}
>>> b - a
{3, 4}
>>> b.difference(a)
{3, 4}
세트 관련 함수
add
add(값)함수로 이미 만들어진 세트 자료형에 값을 추가할 수 있다.- 세트에 이미 존재하는 값을 넣으려 하면 아무 변화가 일어나지 않는다.
>>> a = set(["a", "b", "c"])
>>> a.add(1)
>>> a
{'c', 'b', 'a', 1}
>>> a.add("a")
>>> a
{'c', 'b', 'a', 1}
update
update()함수를 사용하여 여러 개의 값을 한 번에 추가할 수 있다.
>>> a = set(["a", "b", "c"])
>>> a.update(["e", "f", "g"])
>>> a
{'f', 'a', 'g', 'c', 'b', 'e'}
>>> a.update("ABCD")
>>> a
{'A', 'D', 'f', 'a', 'C', 'g', 'B', 'c', 'b', 'e'}
remove
remove(값)함수를 사용하여 세트 내의 특정 값을 제거할 수 있다.
>>> a = set(["a", "b", "c", "e", "f"])
>>> a.remove("a")
>>> a
{'f', 'c', 'b', 'e'}