فروزن ست (Frozenset)
«فروزن ست (Frozenset)» نسخه تغییرناپذیرِ «ست (Set)» است. تغییرناپذیر یعنی بعداً نمی توانی عضو اضافه یا حذف کنی. اما هنوز یکتا و بی نظم است. بنابراین برای کلید دیکشنری یا عضوی از یک ست دیگر مناسب است.
فروزن ست چیست؟
فروزن ست یک مجموعه یکتا و بدون ترتیب است. «تغییرناپذیر (Immutable)» یعنی عملیات مخرب ندارد.
ساخت frozenset با سازنده
با تابع frozenset() از هر «قابل تکرار (Iterable)» می سازی.
x = frozenset({"apple", "banana", "cherry"})
print(x)
print(type(x))
نکته: چون تغییرناپذیر است، add و remove ندارد.
کپی سطحی (copy)
متد copy() یک کپی سطحی می دهد. محتوا همان است.
a = frozenset({"a", "b"})
b = a.copy()
print(b)
اتحاد (union) و عملگر |
متد union() یک فروزن ست جدید با همه اعضا می دهد.
s1 = frozenset({"a", "b", "c"})
s2 = frozenset({1, 2, 3})
s3 = s1.union(s2)
print(s3)
اشتراک (intersection) و عملگر &
متد intersection() فقط مشترک ها را نگه می دارد.
s1 = frozenset({"apple", "banana", "cherry"})
s2 = frozenset({"google", "microsoft", "apple"})
res = s1.intersection(s2)
print(res)
تفاضل (difference) و عملگر -
متد difference() اعضای فقط-در-اولی را برمی گرداند.
s1 = frozenset({"apple", "banana", "cherry"})
s2 = frozenset({"google", "microsoft", "apple"})
res = s1.difference(s2)
print(res)
تفاضل متقارن (symmetric_difference) و عملگر ^
متد symmetric_difference() فقط غیرمشترک های دو مجموعه را می دهد.
s1 = frozenset({"apple", "banana", "cherry"})
s2 = frozenset({"google", "microsoft", "apple"})
res = s1.symmetric_difference(s2)
print(res)
مقایسه مجموعه ها: زیرمجموعه و ابرمجموعه
زیرمجموعه (Subset) یعنی همه اعضا در مجموعه دیگر باشند. ابرمجموعه (Superset) برعکس آن است.
small = frozenset({"a", "b"})
big = frozenset({"a", "b", "c"})
print(small.issubset(big))
print(big.issuperset(small))
بی اشتراکی (isdisjoint)
اگر هیچ عضو مشترکی نباشد، isdisjoint() مقدار درست می دهد.
a = frozenset({1, 2})
b = frozenset({3, 4})
print(a.isdisjoint(b))
گام های عملی سریع
- از لیست یا ست، فروزن ست بساز.
- با
unionادغام غیرمخرب بگیر. - با
intersectionمشترک ها را ببین. - با
differenceاختلاف را محاسبه کن. - با
isdisjointبی اشتراکی را بررسی کن.
ادامه مسیر و منابع
برگرد به ادغام مجموعه ها برای مرور عملگرها. همچنین صفحه فروزن ست مرجع این مبحث است و سپس به متدهای مجموعه سر بزن.
W3Schools: frozenset — متن و لینک های تمرین. | Python Docs: set — رفتار رسمی مجموعه ها.
جمع بندی سریع
- فروزن ست تغییرناپذیر است.
- اعضا یکتا و بی نظم هستند.
- عملیات غیرمخرب را پشتیبانی می کند.
- برای کلید دیکشنری عالی است.
- اتحاد و اشتراک باز هم کار می کنند.