- 수학의 집합과 비슷한 형태로 순서가 없기 때문에 어떤 값이 먼저 나올지 알 수 없고, 중복되는데이터를 허용하지 않음
- 딕셔너리처럼 중괄호를 사용해서 선언하지만, key는 존재하지 않고 value만 존재
s1 = {1, 3, 5, 7}
print(s1)
s2 = set([1, 3, 5, 7])
print(s2)
s3 = {1, 3, 5, 7, 5, 3, 9}
print(s3)
[결과]
{1, 3, 5, 7}
{1, 3, 5, 7}
{1, 3, 5, 7, 9}
print(2 in s3)
print(5 in s3)
print(3 not in s3) # not은 True를 False로, False를 True로 변경
[결과]
False
True
False
- add() : set에 단일 데이터를 추가
- update() : set에 여러 데이터를 한번에 추가
- remove() : set의 데이터를 제거 (제거할 데이터가 없으면 에러 발생)
- discard() : set의 데이터를 제거 (제거할 데이터가 없어도 에러가 발생하지 않음)
- copy() : set을 복사
s1 = {100, 200}
s1.add(150)
print(s1) # 순서가 정의되지 않음
s1.add(20)
print(s1)
[결과]
{200, 100, 150}
{200, 100, 20, 150}
s2 = {10, 20, 30}
s2.update([40, 50, 60, 20])
print(s2)
[결과]
{40, 10, 50, 20, 60, 30}
s2.remove(50)
print(s2)
# s2.remove(50) # KeyError: 50
[결과]
{40, 10, 20, 60, 30}
s2.discard(30)
print(s2)
s2.discard(30)
print(s2)
[결과]
{40, 10, 20, 60}
{40, 10, 20, 60}
s3 = {10, 20, 30}
s4 = s3.copy()
print(s3)
print(s4)
[결과]
{10, 20, 30}
{10, 20, 30}
📌 주의사항 : set은 슬라이싱을 지원하지 않는다.
# TypeError: 'set' object does not support item assignment
s3[0] = 100
print(s3)
- 합집합(union) :
|
- 교집합(intersection) :
&
- 차집합(difference) :
-
- 대칭 차집합(symmetric_difference) :
^
s1 = {10, 20, 30, 40, 50}
s2 = {30, 40, 50, 60, 70}
result = s1 | s2
print(result)
result = s1.union(s2)
print(result)
[결과]
{70, 40, 10, 50, 20, 60, 30}
{70, 40, 10, 50, 20, 60, 30}
result = s1 & s2
print(result)
result = s1.intersection(s2)
print(result)
[결과]
{40, 50, 30}
{40, 50, 30}
result = s1 - s2
print(result)
result = s1.difference(s2)
print(result)
[결과]
{10, 20}
{10, 20}
result = s1 ^ s2
print(result)
result = s1.symmetric_difference(s2)
print(result)
[결과]
{20, 70, 10, 60}
{20, 70, 10, 60}