파이썬
9. 집합(SET) - 합집합, 교집합, 차집합
미스터 한뺑
2022. 7. 28. 21:48
반응형
1. 집합
파이썬 2.3부터 지원하기 시작한 자료형으로, 집합에 관련된 것을 쉽게 처리하기 위해 만든 자료형
>>> s1 = set([1,2,3])
>>> s1
{1, 2, 3} #리스트를 set으로 바꾸기
>>> s2 = set("Hello")
>>> s2
{'e', 'H', 'l', 'o'}
비어 있는 집합을 s= set()으로 표현할 수 있다.
2. 집합의 특징
1. 중복을 허용하지 않는다
2. 순서가 없다.
중복을 허용하지 않는 특징 대문에 set은 자료형의 중복을 제거하기 위한 필터로 종종 사용한다
리스트나 튜플은 순서가 있기 때문엔 인덱싱을 통해 자료형의 값을 얻을수 있는다 set은 순서가 없기 때문에 인덱싱이 불가능하다. 딕셔너리 역시 순서가 없는 자료형이라 인덱싱이 안되는 것은 똑같다.
만약에 set에서 인덱싱을 주고 싶으면 set을 list형식으로 바꾸면 된다.
>>> s1 = set([1,2,3])
>>> l1 = list(s1)
>>> l1
[1, 2, 3]
>>> l1[0]
1
>>> t1 = tuple(s1)
>>> t1
(1, 2, 3)
>>> t1[0]
1
3.교집합, 합집합, 차집합
>>> s1 = set([1, 2, 3, 4, 5, 6])
>>> s2 = set([4, 5, 6, 7, 8, 9])
다음 중 예시로 위에 set형태인 s1,s2가 있다.
3 - 1 교집합
>>> s1 & s2
{4, 5, 6}
>>> s1.intersection(s2)
{4, 5, 6}
& 난 intersection함수를 적으면된다.
3 - 2 합집합
>>> s1 | s2
{1, 2, 3, 4, 5, 6, 7, 8, 9}
>>> s1.union(s2)
{1, 2, 3, 4, 5, 6, 7, 8, 9}
"|" 기호를 사용한 방법과 는 union 함수를 사용하면 된다.
3 - 3 차집합
>>> s1 - s2
{1, 2, 3}
>>> s2 - s1
{8, 9, 7}
>>> s1.difference(s2)
{1, 2, 3}
>>> s2.difference(s1)
{8, 9, 7}
빼기(-) 기호를 사용한 방법 difference 함수를 사용하면된다.
4. 다양한 set의 함수
값 1개 추가하기(add)
이미 만들어진 set 자료형에 값을 추가할 수 있다. 1개의 값만 추가(add)할 경우에는 다음과 같이 한다.
>>> s1 = set([1, 2, 3])
>>> s1.add(4)
>>> s1
{1, 2, 3, 4}
값 여러 개 추가하기(update)
여러 개의 값을 한꺼번에 추가(update)할 때는 다음과 같이 하면 된다. 추가 할때 대괄호를 이용해 넣어준다
>>> s1 = set([1, 2, 3])
>>> s1.update([4, 5, 6])
>>> s1
{1, 2, 3, 4, 5, 6}
특정 값 제거하기(remove)
특정 값을 제거하고 싶을 때는 다음과 같이 하면 된다. 리스트와 같이 값을 제거하는게 똑같다.
>>> s1 = set([1, 2, 3])
>>> s1.remove(2)
>>> s1
{1, 3}
반응형