점프 투 파이썬 참고: 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}