본문 바로가기

진리는어디에/Python

[Python] 시퀀스 자료형 #3 셑(set)

이번 강좌에서는 파이썬에서 수학적 집합 연산을 제공하는 시퀀스인 set에 대해 알아 보도록 하겠다.

목차

  1. 리스트(list)
  2. 튜플(tuple)
  3. >> 셑(set)
  4. 딕셔너리(dict)

https://www.thegeekstuff.com/2019/04/python-set-examples/

셑(set) 이란?

  • 파이썬에서 "수학적 집합 연산(교집합, 합집합, 차집합)을 제공하는 시퀀스다.
  • 요소의 중복을 허용하지 않고 순서를 유지하지 않는다
  • 배열 연산자를 통해 요소에 접근 할 수 없다
s3 = set('hello')  # set은 중복을 허용하지 않고 순서를 유지하지 않는다
print(s3)          # {'e', 'o', 'h', 'l'}

print(s3[0])       # 배열 연산자를 통해 요소 접근 불가

셑(set)의 생성

1. 타입 이름 'set' 사용

# set 데이터 타입 이름으로 생성
s1 = set([1, 2, 3])
print(s1)          # {1, 2, 3}

2. 중괄호 '{}' 사용

# 중괄호 {}를 이용해 생성
s2 = {1, 2, 3}
print(s2)          # {1, 2, 3}

3. 셑(set) 표현식 사용

s1 = { i for i in range(10) if i % 2 == 0 }

print(s1) # {0, 2, 4, 6, 8}

셑(set)의 연산

s = {1, 2, 3}

# set의 요소 개수 조사
len(s)                   # 3

# 단일 요소 추가
s.add(4)                 # {1, 2, 3, 4}

# 다중 요소 추가. 여러개를 한번에 추가할 때는 update 사용. 
# 단, 중복을 허용하지 않기 때문에 set에 이미 있는 3, 4는 누락 된다.
s.update({3, 4, 5, 6})   # {1, 2, 3, 4, 5, 6}

# 요소 제거
s.remove(5)              # {1, 2, 3, 4, 6}

셑(set)의 집합 연산

https://www.learnbyexample.org/python-set/

s1 = {1, 2, 3, 4, 5}
s2 = {4, 5, 6, 7, 8, 9}

# 교집합
print(s1.intersection(s2)) # {4, 5}
print(s1 & s2)             # {4, 5}

# 합집합
print(s1.union(s2))        # {1, 2, 3, 4, 5, 6, 7, 8, 9}
print(s1 | s2)             # {1, 2, 3, 4, 5, 6, 7, 8, 9}

# 차집합
print(s1.difference(s2))   # {1, 2, 3}
print(s1 - s2)             # {1, 2, 3}

# 대칭 차집합
print(s1.symmetric_difference(s2)) # {1, 2, 3, 6, 7, 8, 9}
print(s1 ^ s2)                     # {1, 2, 3, 6, 7, 8, 9}

마치며

이상 간단하게 set의 연산에 대해 알아 보았다. set에 대한 내용은 앞으로 예제들을 다루며 그 때, 그 때 추가 설명을 하도록하고 이정도로 정리하고 넘어가도록 한다. 다음은 파이썬 시퀀스의 마지막인 강좌인 [Python] 파이썬 기초부터 시작하기 - dictionary에 대해 살펴 보겠다.

부록 1. 같이 보면 좋은 글

유익한 글이었다면 공감(❤) 버튼 꾹!! 추가 문의 사항은 댓글로!!