- Python - 프로그래밍 시작하기
- Python 기초 (Basics)
- Python 변수 (Variables)
- Python 연산자 (Operators)
- Python 리스트 (List)
- Python 튜플 (Tuple)
- Python 문자열 (Strings)
- Python 집합 (Sets)
- Python 딕셔너리 (Dictionary)
- Python 흐름 제어 (Flow control)
- Python 함수 (Function)
- Python 클래스 (Class)
- Python 내장 함수 (Built-in function)
- Python 키워드 (Keyword)
- Keyword - and
- Keyword - as
- Keyword - assert
- Keyword - break
- Keyword - class
- Keyword - continue
- Keyword - def
- Keyword - del
- Keyword - elif
- Keyword - else
- Keyword - except
- Keyword - False
- Keyword - for
- Keyword - from
- Keyword - global
- Keyword - if
- Keyword - import
- Keyword - in
- Keyword - is
- Keyword - lambda
- Keyword - None
- Keyword - not
- Keyword - or
- Keyword - pass
- Keyword - return
- Keyword - True
- Keyword - try
- Keyword - while
- Python 파일 다루기
- Python datetime 모듈
- Python time 모듈
- Python collections.deque
- Python collections.namedtuple
- Python의 선 (Zen of Python)
- Python Tutorial
- NumPy Tutorial
- Matplotlib Tutorial
- PyQt5 Tutorial
- BeautifulSoup Tutorial
- xlrd/xlwt Tutorial
- Pillow Tutorial
- Googletrans Tutorial
- PyWin32 Tutorial
- PyAutoGUI Tutorial
- Pyperclip Tutorial
- TensorFlow Tutorial
- Tips and Examples
Python 집합 (Sets)¶
파이썬의 집합 (Set)은 말 그대로 요소 (Item)들의 모음입니다.
중괄호 사이에 위치하는 요소들 간에는 순서가 없고, 따라서 인덱싱을 사용할 수 없습니다.
또한 집합은 두 개 이상의 같은 값을 가질 수 없습니다.
파이썬에서 집합 자료형을 다루는 다양한 방법에 대해 소개합니다.
집합 만들기¶
파이썬의 집합 자료형은 {} 또는 set() 함수를 이용해서 만들어집니다.
set_fruit = {'apple', 'banana', 'orange'}
print(set_fruit)
set_fruit2 = set([1, 2, 3, 4])
print(set_fruit2)
set_fruit3 = set('apple')
print(set_fruit3)
{'orange', 'apple', 'banana'}
{1, 2, 3, 4}
{'a', 'p', 'e', 'l'}
set(‘apple’)은 ‘apple’의 각각의 문자를 갖는 집합을 만드는데, 문자 ‘p’는 한 번만 포함됩니다.
빈 집합을 만들기 위해서는 {} 대신 set()를 사용합니다. {}을 사용하면 딕셔너리가 만들어집니다.
집합 요소 값 얻기¶
파이썬 리스트, 튜플, 딕셔너리와 달리 집합의 요소 값들은 직접 접근할 수 없습니다.
하지만 for 반복문을 이용해서 집합의 모든 값들을 얻을 수 있습니다.
set_fruit = {'apple', 'banana', 'orange'}
for fruit in set_fruit:
print(fruit)
banana
apple
orange
집합 값 추가하기¶
집합에 요소를 추가하기 위해서는 add() 또는 update() 메서드를 사용합니다.
add()¶
집합에 한 개의 값을 추가할 때 add() 메서드를 사용할 수 있습니다.
set_fruit = {'apple', 'banana', 'orange'}
print(set_fruit)
set_fruit.add('watermelon')
print(set_fruit)
{'apple', 'orange', 'banana'}
{'apple', 'orange', 'banana', 'watermelon'}
‘watermelon’ 요소가 집합에 추가됩니다.
update()¶
집합에 여러 개의 요소를 추가하기 위해서 update() 메서드를 사용할 수 있습니다.
set_fruit = {'apple', 'banana', 'orange'}
print(set_fruit)
set_fruit.update(['watemelon', 'mango'])
print(set_fruit)
{'orange', 'banana', 'apple'}
{'banana', 'apple', 'mango', 'watemelon', 'orange'}
집합 값 삭제하기¶
집합의 요소를 삭제하기 위해서는 discard(), remove(), pop() 메서드를 사용합니다.
discard()¶
set_fruit = {'apple', 'banana', 'orange'}
print(set_fruit)
set_fruit.discard('apple')
print(set_fruit)
set_fruit.discard('mango')
print(set_fruit)
{'orange', 'banana', 'apple'}
{'orange', 'banana'}
{'orange', 'banana'}
삭제할 요소가 없을 때는 집합에 변화가 생기지 않습니다.
remove()¶
remove() 메서드의 동작은 discard()와 유사하지만, 삭제할 요소가 없을 때 에러를 발생하는 점이 다릅니다.
set_fruit = {'apple', 'banana', 'orange'}
print(set_fruit)
set_fruit.remove('apple')
print(set_fruit)
set_fruit.remove('mango')
print(set_fruit)
{'apple', 'orange', 'banana'}
{'orange', 'banana'}
Traceback (most recent call last):
File "main.py", line 7, in <module>
set_fruit.remove('mango')
KeyError: 'mango'
pop()¶
집합에서 요소를 삭제하기 위해 pop() 메서드를 사용할 수도 있습니다.
pop() 메서드는 보통 마지막 요소를 뽑아서 반환하는 동작을 하지만, 집합은 순서가 없기 때문에 어떤 요소가 반환될지 알 수 없습니다.
set_fruit = {'apple', 'banana', 'orange'}
print(set_fruit)
set_fruit.add('mango')
print(set_fruit)
print(set_fruit.pop())
print(set_fruit)
{'orange', 'banana', 'apple'}
{'orange', 'banana', 'apple', 'mango'}
orange
{'banana', 'apple', 'mango'}
clear()¶
clear() 메서드는 집합을 빈 집합으로 만듭니다.
set_fruit = {'apple', 'banana', 'orange'}
print(set_fruit)
set_fruit.clear()
print(set_fruit)
{'orange', 'apple', 'banana'}
set()
집합 제거하기¶
del¶
del 키워드를 사용해서 집합을 제거할 수 있습니다.
set_fruit = {'apple', 'banana', 'orange'}
print(set_fruit)
del set_fruit
print(set_fruit)
{'apple', 'banana', 'orange'}
Traceback (most recent call last):
File "main.py", line 5, in <module>
print(set_fruit)
NameError: name 'set_fruit' is not defined
set_fruit 집합을 제거했습니다.
제거할 집합이 없다면 에러를 발생합니다.
집합 연산¶
파이썬의 집합 자료형을 이용해서 합집합, 교집합, 차집합, 대칭차집합과 같은 수학적 집합 연산을 수행할 수 있습니다.
집합 연산을 위해 union(), intersection(), difference(), symmetric_difference()과 같은 다양한 메서드를 사용합니다.
union() - 합집합¶
두 집합의 합집합을 얻기 위해 union() 메서드를 사용합니다.
set_A = {1, 2, 4, 7}
set_B = {2, 3, 7, 9}
print(set_A.union(set_B))
print(set_B.union(set_A))
print(set_A | set_B)
{1, 2, 3, 4, 7, 9}
{1, 2, 3, 4, 7, 9}
{1, 2, 3, 4, 7, 9}
| 연산자는 union() 메서드와 같은 동작을 구현합니다.
intersection() - 교집합¶
두 집합의 교집합을 얻기 위해 intersection() 메서드를 사용합니다.
set_A = {1, 2, 4, 7}
set_B = {2, 3, 7, 9}
print(set_A.intersection(set_B))
print(set_B.intersection(set_A))
print(set_A & set_B)
{2, 7}
{2, 7}
{2, 7}
& 연산자는 intersection() 메서드와 같은 동작을 구현합니다.
difference() - 차집합¶
두 집합의 차집합을 얻기 위해 difference() 메서드를 사용합니다.
set_A = {1, 2, 4, 7}
set_B = {2, 3, 7, 9}
print(set_A.difference(set_B))
print(set_A - set_B)
print(set_B.difference(set_A))
print(set_B - set_A)
{1, 4}
{1, 4}
{9, 3}
{9, 3}
- 연산자는 difference() 메서드와 같은 동작을 구현합니다.
symmetric_difference() - 대칭차집합¶
두 집합의 대칭차집합을 얻기 위해 symmetric_difference() 메서드를 사용합니다.
set_A = {1, 2, 4, 7}
set_B = {2, 3, 7, 9}
print(set_A.symmetric_difference(set_B))
print(set_B.symmetric_difference(set_A))
print(set_A ^ set_B)
{1, 3, 4, 9}
{1, 3, 4, 9}
{1, 3, 4, 9}
^ 연산자는 symmetric_difference() 메서드와 같은 동작을 구현합니다.