[Python] 집합 자료형(set)

Jeongyun Heo·2020년 12월 14일
0

Python

목록 보기
3/36

점프 투 파이썬 참고: https://wikidocs.net/1015

✍️  집합 자료형

중복된 요소를 가질 수 없다
중복을 허용하지 않는다
순서가 없다 (인덱싱. 순서로 불러내는 거 못 함)
교집합 구할 때 많이 씀
List를 집합으로 만들어서 중복된 요소 제거 후 다시 List로 만들어서 씀


✍️  집합 자료형 만드는 법

집합 자료형은 set 키워드를 사용해 만들 수 있다.

s1 = set([1, 2, 3])
print(s1) 👉 {1, 2, 3}
s1 = {1, 2, 3}
print(s1) 👉 {1, 2, 3}

List를 집합으로 만들어서 중복된 요소 제거 후 다시 List로 만들어서 씀

a = [1, 2, 2, 3, 3]
newList = list(set(a))
print(newList) 👉 [1, 2, 3]
s1 = set("Hello")
print(s1) 👉 {'l', 'e', 'H', 'o'}  ⬅️ 순서 없이 뒤죽박죽
집합으로 만들면 순서가 없어지고 중복된 게 없어짐

✍️  교집합, 합집합, 차집합 구하기

🔷  교집합 구하기 (&, .intersection)

A집합에도 있고 B집합에서 있는 거

"&" 기호를 사용하여 교집합 구하기

s1 = set([1, 2, 3, 4, 5, 6])
s2 = set([4, 5, 6, 7, 8, 9])
print(s1 & s2) 👉 {4, 5, 6}

intersection 함수를 사용하여 교집합 구하기

s1 = set([1, 2, 3, 4, 5, 6])
s2 = set([4, 5, 6, 7, 8, 9])
print(s1.intersection(s2)) 👉 {4, 5, 6}

🔷  합집합 구하기 (|, .union)

중복을 두 번 쓰지 않은 A집합 + B집합
중복해서 포함된 값은 한 개씩만 표현된다.

"|" 기호를 사용하여 합집합 구하기

s1 = set([1, 2, 3, 4, 5, 6])
s2 = set([4, 5, 6, 7, 8, 9])
print(s1 | s2) 👉 {1, 2, 3, 4, 5, 6, 7, 8, 9}

union 함수를 이용해서 합집합 구하기

s1 = set([1, 2, 3, 4, 5, 6])
s2 = set([4, 5, 6, 7, 8, 9])
print(s1.union(s2)) 👉 {1, 2, 3, 4, 5, 6, 7, 8, 9}

🔷  차집합 구하기 (-, .difference)

빼기(-) 기호를 사용하여 차집합 구하기

s1 = set([1, 2, 3, 4, 5, 6])
s2 = set([4, 5, 6, 7, 8, 9])
print(s1 - s2) 👉 {1, 2, 3}

difference 함수를 이용하여 차집합 구하기

s1 = set([1, 2, 3, 4, 5, 6])
s2 = set([4, 5, 6, 7, 8, 9])
print(s1.difference(s2)) 👉 {1, 2, 3}
s1 = set([1, 2, 3, 4, 5, 6])
s2 = set([4, 5, 6, 7, 8, 9])
print(s2.difference(s1)) 👉 {8, 9, 7} 집합은 순서가 없음

✍️  집합 자료형 관련 함수들

🔷  값 1개 추가하기(add)

s1 = set([1, 2, 3, 4, 5, 6])
s1.add(7)
print(s1) 👉 {1, 2, 3, 4, 5, 6, 7}
print(s1.add(7)) # 이렇게 입력하면 안 나옴. 결과 리턴 안 해줌.

🔷  값 여러 개 추가하기(update)

s1 = set([1, 2, 3, 4, 5, 6])
s1.update([7, 8, 9])
print(s1) 👉 {1, 2, 3, 4, 5, 6, 7, 8, 9}

🔷  특정 값 제거하기(remove)

s1 = set([1, 2, 3, 4, 5, 6])
s1.remove(1)
print(s1) 👉 {2, 3, 4, 5, 6}

0개의 댓글