مجموعهها در پایتون
تعریف set، عملیات مجموعهای (اجتماع، اشتراک، تفاضل) و کاربردهای آن
مجموعه (Set) چیست؟
مجموعه (Set) ساختار دادهای است که:
- بدون ترتیب (Unordered) است
- بدون تکرار است (هر عنصر فقط یک بار)
- تغییرپذیر است
تعریف مجموعه
# با آکولاد
fruits = {"سیب", "موز", "پرتقال"}
# با تابع set()
numbers = set([1, 2, 3, 4, 5])
# مجموعه خالی (نکته: {} دیکشنری خالی است!)
empty = set()
{} یک دیکشنری خالی میسازد، نه مجموعه! برای مجموعه خالی از set() استفاده کنید.ویژگی اصلی: حذف تکرارها
numbers = {1, 2, 2, 3, 3, 3, 4}
print(numbers) # {1, 2, 3, 4} — تکرارها حذف شدند
# حذف تکرار از لیست
my_list = [1, 2, 2, 3, 3, 3, 4, 4]
unique = list(set(my_list))
print(unique) # [1, 2, 3, 4]
افزودن و حذف
s = {1, 2, 3}
# افزودن
s.add(4)
print(s) # {1, 2, 3, 4}
# افزودن چندتایی
s.update([5, 6, 7])
print(s)
# حذف
s.remove(1) # خطا اگر نباشد
s.discard(10) # خطا نمیدهد اگر نباشد
s.pop() # حذف تصادفی
s.clear() # خالی کردن
عملیات مجموعهای
این مهمترین کاربرد مجموعههاست:
اجتماع (Union)
A = {1, 2, 3}
B = {3, 4, 5}
# اجتماع
print(A | B) # {1, 2, 3, 4, 5}
print(A.union(B)) # همان
اشتراک (Intersection)
# اشتراک (عناصر مشترک)
print(A & B) # {3}
print(A.intersection(B)) # همان
تفاضل (Difference)
# تفاضل (در A ولی نه در B)
print(A - B) # {1, 2}
print(A.difference(B)) # همان
تفاضل متقارن (Symmetric Difference)
# عناصری که فقط در یکی هستند
print(A ^ B) # {1, 2, 4, 5}
print(A.symmetric_difference(B)) # همان
بررسی زیرمجموعه و فوقمجموعه
A = {1, 2}
B = {1, 2, 3, 4}
print(A.issubset(B)) # True (A زیرمجموعه B)
print(B.issuperset(A)) # True (B شامل A)
بررسی عضویت
s = {"سیب", "موز", "پرتقال"}
print("موز" in s) # True
بررسی عضویت در set بسیار سریعتر از لیست است (O(1) در برابر O(n)). برای بررسی وجود مقدار در مجموعههای بزرگ، از set استفاده کنید!
پیمایش مجموعه
fruits = {"سیب", "موز", "پرتقال"}
for fruit in fruits:
print(fruit)
# ترتیب تضمین نمیشود!
طول مجموعه
s = {1, 2, 3, 4, 5}
print(len(s)) # 5
frozenset — مجموعه تغییرناپذیر
# مجموعه تغییرناپذیر
fs = frozenset([1, 2, 3])
# fs.add(4) # ❌ خطا!
مثال کاربردی
پیدا کردن مهارتهای مشترک
dev1_skills = {"Python", "Git", "SQL", "Docker"}
dev2_skills = {"Python", "JavaScript", "Git", "AWS"}
# مهارتهای مشترک
common = dev1_skills & dev2_skills
print(f"مشترک: {common}")
# همه مهارتها
all_skills = dev1_skills | dev2_skills
print(f"همه: {all_skills}")
# مهارتهای اختصاصی dev1
unique1 = dev1_skills - dev2_skills
print(f"اختصاصی dev1: {unique1}")
خلاصه
| عملیات | عملگر | متد |
|---|---|---|
| اجتماع | A | B | A.union(B) |
| اشتراک | A & B | A.intersection(B) |
| تفاضل | A - B | A.difference(B) |
| تفاضل متقارن | A ^ B | A.symmetric_difference(B) |
این مبحث بخشی از دوره آموزش کامل پایتون است.