## Sets في Python
الـ Set هي مجموعة من العناصر **الفريدة** (بدون تكرار) وغير مرتبة.
### خصائص Set: - لا تكرار للعناصر - غير مرتبة (لا يوجد فهرس) - سريعة في البحث والتحقق من الوجود
### إنشاء Set: ```python empty_set = set() # ليس {} (ذلك dict) numbers = {1, 2, 3, 4, 5} unique = set([1, 2, 2, 3, 3]) # {1, 2, 3} - حذف التكرار ```
### عمليات المجموعات: | العملية | الرمز | الدالة | |---|---|---| | الاتحاد | || | union() | | التقاطع | & | intersection() | | الفرق | - | difference() | | الفرق المتماثل | ^ | symmetric_difference() |
| 1 | # إنشاء Set وإزالة التكرار |
| 2 | nums = {1, 2, 3, 3, 2, 1} |
| 3 | print(nums) # {1, 2, 3} |
| 4 | |
| 5 | # الإضافة والحذف |
| 6 | nums.add(4) |
| 7 | nums.remove(2) |
| 8 | nums.discard(99) # لا خطأ إن لم يوجد |
| 9 | |
| 10 | # التحقق |
| 11 | print(3 in nums) # True |
مثال 1: عمليات المجموعات
| 1 | A = {1, 2, 3, 4, 5} |
| 2 | B = {4, 5, 6, 7, 8} |
| 3 | |
| 4 | print("الاتحاد:", A | B) # كل العناصر |
| 5 | print("التقاطع:", A & B) # العناصر المشتركة |
| 6 | print("الفرق A-B:", A - B) # في A وليست في B |
| 7 | print("الفرق B-A:", B - A) # في B وليست في A |
| 8 | print("الفرق المتماثل:", A ^ B) # في أحدهما لا كليهما |
مثال 2: إزالة التكرار من قائمة
| 1 | # الطريقة الأسرع لإزالة التكرار |
| 2 | emails = ["a@test.com", "b@test.com", "a@test.com", "c@test.com"] |
| 3 | unique_emails = list(set(emails)) |
| 4 | print(f"قبل: {len(emails)} بريد") |
| 5 | print(f"بعد: {len(unique_emails)} بريد فريد") |