참고자료: https://wikidocs.net/1015
5. 집합
# 집합은 set 이라는 키워드를 사용하여 만들 수 있다.
s1 = set([1, 2, 3])
print(s1)
{1, 2, 3}
s2 = set("Hello")
print(s2)
{'e', 'H', 'l', 'o'}
# 집합에 값에는 중복을 허용하지 않고 순서가 따로 없다.
# 집합에서 인덱싱하고 값을 선택하고 슬라이싱하고 형변환이 필요하다. (리스트 or 튜플..)
s1 = set([1, 2, 3])
l1 = list(s1)
print(l1)
[1, 2, 3]
l1[0]
1
t1 = tuple(s1)
print(t1)
(1, 2, 3)
print(t1[0])
1
# 값의 중복을 제거할 때도 집합을 많이 사용한다.
l1 = [1,2,2,3,3,3,3,4]
s1 = set(l1)
print(s1)
{1,2,3,4}
li = list(set(l1))
print(li)
[1,2,3,4]
# 다시 리스트 형으로 맞추면 중복이 사라진 리스트형으로 바꿀 수 있다.
# 비어있는 집합 자료형은 s = set()로 만들 수 있다.
# 교집합, 합집합, 차집합 구하기
# 예시: 2개의 집합
s1 = set([1, 2, 3, 4, 5, 6])
s2 = set([4, 5, 6, 7, 8, 9])
# 교집합 : & or intersection 함수
print(s1 & s2)
{4, 5, 6}
print(s1.intersection(s2))
{4, 5, 6}
# 합집합 : | or union 함수
print(s1 | s2)
{1, 2, 3, 4, 5, 6, 7, 8, 9}
print(s1.union(s2))
{1, 2, 3, 4, 5, 6, 7, 8, 9}
# 차집합 : - or difference 함수
print(s1 - s2)
{1, 2, 3}
print(s2 - s1)
{8, 9, 7}
print(s1.difference(s2))
{1, 2, 3}
print(s2.difference(s1))
{8, 9, 7}
# 집합 자료형 관련 함수
# 값 1개 추가하기 - add
s1 = set([1, 2, 3])
s1.add(4)
print(s1)
{1, 2, 3, 4}
# 값 여러 개 추가하기 - update
s1 = set([1, 2, 3])
s1.update([4, 5, 6])
print(s1)
{1, 2, 3, 4, 5, 6}
# 특정 값 제거하기 - remove
s1 = set([1, 2, 3])
s1.remove(2)
print(s1)
{1, 3}