set과 frozenset 차이
| 구분 | set() | frozenset() |
|---|
| 순서 | x | x |
| 인덱스 | x | x |
| 변경 | o | x |
| 해시 값 | x | o |
| 사전의 키나 다른 세트의 요소로 사용 | x | o |
state = ("seller_name", 100, set({"apple", "banana", "cherry"}))
states_set = set()
states_set.add(state)
state = ("seller_name", 100, frozenset({"apple", "banana", "cherry"}))
states_set = set()
states_set.add(state)
print(states_set)
set()
특징
- 순서 없음
- 인덱스 없음
- 변경 가능
- 해시 값 없음
- 가변(mutable)
- 사전의 키나 다른 세트의 요소로 사용할 수 없음
자주 사용하는 함수
- 추가:
add()
- 삭제:
remove(), discard
- 크기:
len()
- 연산:
&, |, -
예시
colors = {"red", "orange", "yellow", "green", "blue"}
print("colors:", colors)
colors.add("black")
print("After adding black:", colors)
print("size:", len(colors))
print("black" in colors)
print("gray" not in colors)
colors.remove("orange")
print("after removing orange:", colors)
colors.discard("orange")
print("after discarding orange:", colors)
print("합집합: ", numbers1 | numbers2)
print(numbers1.union(numbers2))
print("교집합: ", numbers1 & numbers2)
print(numbers1.intersection(numbers2))
print("차집합: ", numbers1 - numbers2)
print(numbers1.difference(numbers2))
print("서로소 집합 여부: ", numbers1.isdisjoint(numbers2))
print("부분집합 여부: ", numbers1.issubset(numbers2))
colors: {'red', 'green', 'orange', 'blue', 'yellow'}
After adding black: {'red', 'green', 'orange', 'blue', 'black', 'yellow'}
size: 6
True
True
after removing orange: {'red', 'green', 'blue', 'black', 'yellow'}
{'red', 'green', 'blue', 'black', 'yellow
합집합: {1, 2, 3, 4, 5, 6}
{1, 2, 3, 4, 5, 6}
교집합: {2, 4}
{2, 4}
차집합: {1, 3, 5}
{1, 3, 5}
서로소 집합 여부: False
부분집합 여부: False
frozenset()
특징
- 순서 없음
- 인덱스 없음
- 해시 값 있음
- 불변(immutable)
- 사전의 키나 다른 세트의 요소로 사용할 수 있음
예시
colors = {"red", "orange", "yellow", "green", "blue"}
palette = frozenset(colors)
print("palette:", palette)
print("after adding black", palette)
student = {"Name": "Gildong", "Age": "25", "Gender": "Male"}
key = frozenset(student)
print("keys", key)
numbers1 = frozenset([1, 2, 3, 4, 5])
numbers2 = frozenset([2, 4])
print("합집합: ", numbers1 | numbers2)
print(numbers1.union(numbers2))
print("교집합: ", numbers1 & numbers2)
print(numbers1.intersection(numbers2))
print("차집합: ", numbers1 - numbers2)
print(numbers1.difference(numbers2))
print("서로소 집합 여부: ", numbers1.isdisjoint(numbers2))
print("부분집합 여부: ", numbers2.issubset(numbers1))
palette: frozenset({'red', 'green', 'orange', 'blue', 'yellow'})
after adding black frozenset({'red', 'green', 'orange', 'blue', 'yellow'})
keys frozenset({'Name', 'Age', 'Gender'})
합집합: frozenset({1, 2, 3, 4, 5})
frozenset({1, 2, 3, 4, 5})
교집합: frozenset({2, 4})
frozenset({2, 4})
차집합: frozenset({1, 3, 5})
frozenset({1, 3, 5})
서로소 집합 여부: False
부분집합 여부: False
참고
class set([iterable])
class frozenset([iterable])