파이썬의 집합(set)은 고유한 값들의 모음을 나타내는 자료형이다. 수학에서의 집합 개념과 비슷하게, 중복을 허용하지 않으며 요소의 순서가 없다. 따라서 리스트와 달리 인덱싱이 불가능하다.
집합은 중복된 데이터를 제거하거나 교집합, 합집합, 차집합 등의 집합 연산을 수행할 때 유용하다.
{}
)집합은 중괄호 {}
를 사용해 생성할 수 있으며 값을 쉼표(,
)로 구분해 넣는다.
# 집합 생성
my_set = {1, 2, 3, 4}
print(my_set) # {1, 2, 3, 4}
# 중복을 허용하지 않음
my_set = {1, 2, 2, 3, 4, 4}
print(my_set) # {1, 2, 3, 4} (중복된 요소는 제거됨)
빈 집합을 생성할 때는 set()
함수를 사용해야 한다. {}
만 사용할 경우 빈 딕셔너리로 인식된다.
empty_set = set() # 빈 집합 생성
print(empty_set) # set()
add(x)
/ update(iterable)
add(x)
: 집합에 하나의 요소만을 추가my_set = {1, 2, 3}
my_set.add(4)
print(my_set) # {1, 2, 3, 4}
update(iterable)
: 다른 집합이나 반복 가능한(iterable) 자료형의 요소들을 현재 집합에 추가하는 데 사용되며 쉽게 말해, 여러 데이터를 한 번에 추가.iterable
: 리스트, 튜플, 문자열, 또는 다른 집합 등 반복 가능한 객체.my_set = {1, 2, 3}
# 리스트의 요소들을 집합에 추가
my_set.update([3, 4, 5])
print(my_set) # {1, 2, 3, 4, 5} (중복된 3은 추가되지 않음)
# 튜플의 요소들을 집합에 추가
my_set.update((6, 7))
print(my_set) # {1, 2, 3, 4, 5, 6, 7}
# 문자열의 각 문자를 집합에 추가
my_set.update("abc")
print(my_set) # {1, 2, 3, 4, 5, 6, 7, 'a', 'b', 'c'}
remove(x)
/ discard(x)
remove(x)
: 해당 요소를 제거하고, 없으면 KeyError
오류를 발생시킴.discard(x)
: 해당 요소를 제거하고, 해당 요소가 없어도 오류를 발생시키지 않음.my_set = {1, 2, 3}
my_set.remove(2)
print(my_set) # {1, 3}
my_set.discard(4) # 요소 4가 없지만 오류가 발생하지 않음
len()
집합에 포함된 요소의 개수는 len() 함수로 확인할 수 있다.
my_set = {1, 2, 3, 4}
print(len(my_set)) # 4
in
연산자특정 값이 집합에 있는지 확인하려면 in 연산자
를 사용할 수 있다.
my_set = {1, 2, 3}
print(2 in my_set) # True
print(4 in my_set) # False
|
)두 집합의 모든 요소를 포함하는 집합을 반환합니다. |
연산자 또는 union()
메소드를 사용한다.
set1 = {1, 2, 3}
set2 = {3, 4, 5}
# 합집합
union_set = set1 | set2
print(union_set) # {1, 2, 3, 4, 5}
# 또는
union_set = set1.union(set2)
print(union_set) # {1, 2, 3, 4, 5}
&
)두 집합에서 공통된 요소만을 포함하는 집합을 반환한다. &
연산자 또는 intersection()
메소드를 사용한다.
set1 = {1, 2, 3}
set2 = {3, 4, 5}
# 교집합
intersection_set = set1 & set2
print(intersection_set) # {3}
# 또는
intersection_set = set1.intersection(set2)
print(intersection_set) # {3}
-
)첫 번째 집합에는 있지만 두 번째 집합에는 없는 요소를 반환한다. -
연산자 또는 difference()
메소드를 사용한다.
set1 = {1, 2, 3}
set2 = {3, 4, 5}
# 차집합
difference_set = set1 - set2
print(difference_set) # {1, 2}
# 또는
difference_set = set1.difference(set2)
print(difference_set) # {1, 2}
^
)두 집합 중 어느 한 집합에만 속하는 요소를 반환한다. ^
연산자 또는 symmetric_difference()
메소드를 사용한다.
set1 = {1, 2, 3}
set2 = {3, 4, 5}
# 대칭 차집합
symmetric_diff_set = set1 ^ set2
print(symmetric_diff_set) # {1, 2, 4, 5}
# 또는
symmetric_diff_set = set1.symmetric_difference(set2)
print(symmetric_diff_set) # {1, 2, 4, 5}
집합은 특히 중복된 데이터를 제거하거나, 집합 연산(합집합, 교집합 등)이 필요할 때 유용하다. 예를 들어, 리스트에서 중복된 값을 제거할 때 집합을 사용할 수 있다.
# 리스트에서 중복된 값 제거
my_list = [1, 2, 2, 3, 4, 4, 5]
unique_set = set(my_list) # 중복 제거
unique_list = list(unique_set) # 다시 리스트로 변환
print(unique_list) # [1, 2, 3, 4, 5]