집합 관련 함수, 연산
- 먼저 간단히 집합 관련 함수, 연산을 정리해본다.
a = {1, 2, 3, 4}
b = set([3, 4, 5, 6])
c = set((7, 8, 9))
d = set("hello")
e = set()
print(a, b, c, d, e)
A = {1, 2, 3}
B = {2, 3, 4}
print(A & B)
print(A | B)
print(A - B)
print(A ^ B)
s = {1, 2, 3}
s.add(4)
s.remove(2)
s.discard(10)
s.update([5, 6])
print(s.pop())
s.clear()
A = {1, 2}
B = {1, 2, 3}
C = {3, 4}
print(A.issubset(B))
print(B.issuperset(A))
print(A.isdisjoint(C))
lst = [1, 2, 2, 3, 4]
s = set(lst)
lst2 = list(s)
tpl = tuple(s)
nums = [1, 2, 2, 3, 4, 4, 5]
unique_nums = list(set(nums))
print(unique_nums)
📌 집합 연산 및 메서드 정리
| 기능 | 연산자 / 메서드 | 예제 |
|---|
| 집합 생성 | {} 또는 set(iterable) | set([1, 2, 3]) |
| 교집합 | A & B 또는 A.intersection(B) | {1, 2, 3} & {2, 3, 4} → {2, 3} |
| 합집합 | A | B 또는 A.union(B) | {1, 2, 3} | {2, 3, 4} → {1, 2, 3, 4} |
| 차집합 | A - B 또는 A.difference(B) | {1, 2, 3} - {2, 3, 4} → {1} |
| 대칭 차집합 | A ^ B 또는 A.symmetric_difference(B) | {1, 2, 3} ^ {2, 3, 4} → {1, 4} |
| 원소 추가 | .add(x) | s.add(5) |
| 원소 삭제 | .remove(x), .discard(x), .pop() | s.remove(2) |
| 부분집합 확인 | .issubset(B) | {1, 2}.issubset({1, 2, 3}) → True |
| 상위집합 확인 | .issuperset(B) | {1, 2, 3}.issuperset({1, 2}) → True |
| 공통 원소 확인 | .isdisjoint(B) | {1, 2}.isdisjoint({3, 4}) → True |
and, or, & 연산자
print([1, 2] and [2])
print([] and [1])
print([1] or [1, 2])
print([] or [1])
print([1] or [2, 3])
print(5 & 3)
print(7 & 2)
print(True & True)
print(True & False)
print(False & False)
A = {1, 2, 3}
B = {2, 3, 4}
print(A & B)
print({4, 9, 5} & {9, 4, 8})
| 연산자 | 용도 | 동작 방식 | 예제 | 결과 |
|---|
and | 논리 연산 | A가 False이면 A 반환, True이면 B 반환 | [1, 2] and [2] | [2] |
| | | [] and [1] | [] |
or | 논리 연산 | A가 True이면 A 반환, False이면 B 반환 | [1] or [1, 2] | [1] |
| | | [] or [1] | [1] |
& | 비트 연산 | 두 정수의 비트 AND 연산 수행 | 5 & 3 | 1 (101 & 011 = 001) |
| | | True & False | 0 (1 & 0 = 0) |
& | 집합 연산 | 두 집합의 교집합을 반환 | {1, 2, 3} & {2, 3, 4} | {2, 3} |
| | | {4, 9, 5} & {9, 4, 8} | {4, 9} |