8.1 set-튜플
컬렉션 frozenset
은 변경할 수 없는 set
의 버전이야. 집합의 모든 기능을 제공하지만, 생성 후 요소를 변경할 수 없어. frozenset
은 유니크한 요소를 저장하고 집합이 변경되지 않게 해야 할 때 유용해.
frozenset
생성하기
frozenset
을 만들려면 frozenset()
함수를 사용해서 반복 가능한 객체(리스트, 튜플, 문자열 등)를 전달하면 돼.
예시:
리스트로 frozenset
만들기
# 리스트로 frozenset 만들기
fset1 = frozenset([1, 2, 3, 4])
print(fset1) # 출력: frozenset({1, 2, 3, 4})
문자열로 frozenset
만들기
# 문자열로 frozenset 만들기
fset2 = frozenset("hello")
print(fset2) # 출력: frozenset({'h', 'e', 'l', 'o'})
빈 frozenset
만들기
# 빈 frozenset 만들기
fset3 = frozenset()
print(fset3) # 출력: frozenset()
8.2 frozenset
의 주요 메소드
frozenset
은 변경 가능한 집합 (set)
에서 사용할 수 있는 대부분의 메소드를 지원하지만, 변경할 수 없는 특성 때문에 집합을 변경하는 메소드는 사용할 수 없어.
예시:
집합의 합집합 (union)
fset1 = frozenset([1, 2, 3, 4])
fset2 = frozenset([3, 4, 5, 6])
# 집합의 합집합 (union)
print(fset1 | fset2) # 출력: frozenset({1, 2, 3, 4, 5, 6})
print(fset1.union(fset2)) # 출력: frozenset({1, 2, 3, 4, 5, 6})
집합의 교집합 (intersection)
fset1 = frozenset([1, 2, 3, 4])
fset2 = frozenset([3, 4, 5, 6])
# 집합의 교집합 (intersection)
print(fset1 & fset2) # 출력: frozenset({3, 4})
print(fset1.intersection(fset2)) # 출력: frozenset({3, 4})
집합의 차집합 (difference)
fset1 = frozenset([1, 2, 3, 4])
fset2 = frozenset([3, 4, 5, 6])
# 집합의 차집합 (difference)
print(fset1 - fset2) # 출력: frozenset({1, 2})
print(fset1.difference(fset2)) # 출력: frozenset({1, 2})
대칭 차집합 (symmetric difference)
fset1 = frozenset([1, 2, 3, 4])
fset2 = frozenset([3, 4, 5, 6])
# 대칭 차집합 (symmetric difference)
print(fset1 ^ fset2) # 출력: frozenset({1, 2, 5, 6})
print(fset1.symmetric_difference(fset2)) # 출력: frozenset({1, 2, 5, 6})
8.3 frozenset
의 활용
frozenset
은 다음과 같은 상황에서 유용해:
딕셔너리에서 키로 사용하기:
frozenset
은 변경할 수 없기 때문에 딕셔너리에서 키로 사용할 수 있어.
fset1 = frozenset([1, 2, 3])
fset2 = frozenset([3, 4, 5])
d = {fset1: "first", fset2: "second"}
print(d) # 출력: {frozenset({1, 2, 3}): 'first', frozenset({3, 4, 5}): 'second'}
변경 불가능한 집합 저장:
고유한 요소들로 집합을 만들고 나중에 변경하지 않으려면, frozenset
이 완벽한 선택이야.
데이터의 안전성:
frozenset
을 사용하면 프로그램 실행 중에 데이터가 실수로 변경되지 않도록 보장할 수 있어.
GO TO FULL VERSION