조금씩 꾸준히 완성을 향해

[Python] Set (집합) 본문

Python/문법

[Python] Set (집합)

all_sound 2022. 8. 24. 23:45

< set >

python의 데이터 타입 중 하나로, 수학의 집합 개념이라고 볼 수 있다. 

데이터에 순서가 없고, 값을 중복해서 쓸 수 없다는 것이 특징이다. 

 

 

set 생성

s1 = set()
print(type(s1)) #<class 'set'>

s3 = {1, 2, 3, 4, 5}
print(type(s3)) #<class 'set'>

 

 

▶ string -> set

char = 'abcdef'
sc = set(char)
print(sc)  # {'b', 'd', 'e', 'a', 'c', 'f'}

set은 순서가 없기 때문에 이렇게 문자를 랜덤하게 섞어 버린다.

위치라는 기준 자체가 없기 때문에 index도 사용 불가하다. 

 

 

 

▶ 집합으로의 활용

x = {1,2,3,4,5}
y = {3,4,5,6,7}

#교집합
print(x&y) #{3, 4, 5}
print(x.intersection(y)) #{3, 4, 5}

#합집합
print(x|y) #{1, 2, 3, 4, 5, 6, 7}
print(x.union(y)) #{1, 2, 3, 4, 5, 6, 7}

#차집합
print(x-y) #{1, 2}
print(x.difference(y)) #{1, 2}
print(y-x) #{6, 7}
print(y.difference(x)) #{6, 7}

#대칭 차집합 (교집합 - 합집합)
print(x^y) #{1, 2, 6, 7}
print((x-y)|(y-x)) #{1, 2, 6, 7}

 

 

▶ 추가 & 삭제 ( add, update, remove)

x = {1,2,3,4,5}

x.add(10) #하나의 값 추가
print(x) #{1, 2, 3, 4, 5, 10}

x.update([11,12,13]) #여러 개의 값 추가
print(x) #{1, 2, 3, 4, 5, 10, 11, 12, 13}

x.remove(13) #특정 값 제거
print(x) #{1, 2, 3, 4, 5, 10, 11, 12}