[Python] set

형이·2023년 11월 7일

Python

목록 보기
12/34
post-thumbnail

📝 set

🖥️ 1. set이란?

  • 수학의 집합과 비슷한 형태로 순서가 없기 때문에 어떤 값이 먼저 나올지 알 수 없고, 중복되는데이터를 허용하지 않음
  • 딕셔너리처럼 중괄호를 사용해서 선언하지만, key는 존재하지 않고 value만 존재

1-1. set 만들기

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

1-2. 함수

  • 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)

1-3. set 연산자

  • 합집합(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}

0개의 댓글