파이썬의 세트(Set)는 순서가 없는(unordered) 상태로 중복을 허용하지 않는(unique) 불변(immutable) 객체들을 담는 컬렉션 자료형입니다. 즉, 파이썬 세트에는 중복된 항목을 저장할 수 없으며, 한 번 생성된 세트의 개별 항목 자체는 변경할 수 없습니다.
이 글에서는 파이썬 세트의 기본 개념부터 생성, 항목 접근, 추가, 삭제, 그리고 두 세트를 합치는 방법까지 예제 코드와 함께 차근차근 살펴보겠습니다.
참고: 세트의 항목은 불변(immutable)이므로 항목 자체를 변경할 수는 없습니다. 하지만 세트 그 자체는 가변(mutable)이기 때문에 세트에 항목을 추가하거나 제거하는 것은 가능합니다.
세트는 순서를 유지하지 않습니다. 예를 들어 동일한 세트를 여러 번 출력하면 항목이 출력되는 순서가 매번 달라질 수 있습니다.
파이썬에서 세트는 중괄호 {}를 사용해 만들며, 각 항목은 쉼표 ,로 구분합니다.
리스트와 마찬가지로 세트도 서로 다른 타입의 객체를 함께 담을 수 있으므로, 모든 항목이 문자열이거나 정수일 필요는 없습니다. 예를 들어 다음과 같이 혼합 타입을 포함하는 세트를 만들 수 있습니다:
mixedTypesSet = {'one', True, 13, 2.0}
세트 생성 방법
colorsSet = {"red", "green", "blue"}
print(colorsSet)
출력 결과:
{'red', 'blue', 'green'}
세트 항목에 접근하는 방법
세트는 인덱스를 사용해 특정 항목에 접근할 수 없습니다. 세트는 순서가 없기 때문에 인덱스를 유지하지 않기 때문입니다. 대신 for 루프를 사용해 세트의 항목들을 하나씩 순회할 수 있습니다.
colorsSet = {"red", "green", "blue"}
for c in colorsSet:
print(c)
출력 결과:
green
red
blue
세트에 항목 추가하는 방법
세트에 항목을 하나 추가할 때는 add() 메서드를 사용하고, 여러 개의 항목을 한 번에 추가할 때는 update() 메서드를 사용합니다.
항목 하나 추가하기
colorsSet = {"red", "green", "blue"}
colorsSet.add("yellow")
print(colorsSet)
출력 결과:
{'blue', 'red', 'green', 'yellow'}
여러 항목 추가하기
colorsSet = {"red", "green", "blue"}
colorsSet.update(["yellow", "orange", "white"])
print(colorsSet)
출력 결과:
{'white', 'red', 'green', 'yellow', 'orange', 'blue'}
세트에서 항목 제거하는 방법
세트에서 항목을 제거하는 방법에는 remove()와 discard() 두 가지가 있습니다.
remove() 메서드는 지정한 항목을 제거합니다. 만약 해당 항목이 세트에 존재하지 않으면 오류가 발생합니다.
colorsSet = {"red", "green", "blue", "orange"}
colorsSet.remove("orange")
print(colorsSet)
출력 결과:
{'blue', 'green', 'red'}
discard() 메서드 역시 지정한 항목을 제거하지만, 항목이 존재하지 않더라도 오류를 발생시키지 않습니다. 따라서 항목의 존재 여부가 확실하지 않은 경우에는 discard()를 사용하는 것이 안전합니다.
세트의 모든 요소 비우기
세트의 모든 요소를 제거하고 세트를 비우려면 clear() 메서드를 사용합니다:
colorsSet = {"red", "green", "blue", "orange"}
colorsSet.clear()
print(colorsSet)
출력 결과:
set()
세트 완전히 삭제하기
세트 자체를 완전히 삭제하려면 del 키워드를 사용합니다. 삭제된 세트는 더 이상 존재하지 않으므로, 이후에 접근하면 NameError가 발생합니다.
colorsSet = {"red", "green", "blue", "orange"}
del colorsSet
print(colorsSet)
출력 결과:
Traceback (most recent call last):
File "pythonSet.py", line 79, in <module>
print(colorsSet)
NameError: name 'colorsSet' is not defined
세트 길이 구하는 방법
len() 함수를 호출하면 세트에 포함된 항목의 개수를 알 수 있습니다:
colorsSet = {"red", "green", "blue", "orange"}
print(len(colorsSet))
출력 결과:
4
두 세트 합치는 방법
두 세트를 합치는 가장 간단한 방법은 union() 메서드를 사용하는 것입니다. 이 메서드는 결합된 세트들의 항목을 모두 포함하는 새로운 세트를 반환합니다.
colorsSet = {"red", "green", "blue", "orange"}
numbersSet = {1, 2, 3, 4}
numbersAndColors = colorsSet.union(numbersSet)
print(numbersAndColors)
출력 결과:
{1, 2, 'blue', 3, 4, 'green', 'red', 'orange'}