이번 강좌에서는 파이썬에서 수학적 집합 연산을 제공하는 시퀀스인 set에 대해 알아 보도록 하겠다.
목차
셑(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)의 집합 연산
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에 대해 살펴 보겠다.