Python Tutorials

دليل شامل عن المجموعات في بايثون

Spread the love

المجموعات في بايثون هي مجموعات غير مرتبة من العناصر الفريدة. هذا يعني أن القيم المكررة تُزال تلقائيًا، ولا يؤثر ترتيب إضافة العناصر على كيفية تخزينها أو استرجاعها. المجموعات قابلة للتغيير (متغيرة) بشكل افتراضي، إلا إذا استخدمت نوع frozenset، وهو غير قابل للتغيير.

تُعد المجموعات مفيدة بشكل خاص للمهام التي تتطلب اختبار عضوية فعالاً (التحقق من وجود عنصر)، وإزالة المكررات من قائمة، وإجراء عمليات المجموعات مثل الاتحاد والتقاطع والفرق.

جدول المحتويات

  1. إنشاء المجموعات
  2. إضافة وتحديث العناصر
  3. إزالة العناصر
  4. عمليات المجموعات
  5. طرق المجموعات
  6. عمليات المجموعات الأخرى
  7. الدوال المدمجة مع المجموعات
  8. مجموعات ثابتة (Frozensets)

1. إنشاء المجموعات

يمكنك إنشاء مجموعات باستخدام الأقواس المجعدة {} أو مُنشئ set(). لاحظ أنه يجب إنشاء مجموعة فارغة باستخدام set()؛ {} ينشئ قاموسًا فارغًا.


# باستخدام الأقواس المجعدة
my_set = {1, 2, 3, 4, 5}
print(my_set)  # الإخراج: {1, 2, 3, 4, 5}

# باستخدام مُنشئ set()
another_set = set([6, 7, 8, 8])  # تُزال المكررات تلقائيًا
print(another_set)  # الإخراج: {8, 6, 7}

empty_set = set()
print(empty_set)  # الإخراج: set()

تذكر أن المجموعات غير مرتبة، لذلك قد يختلف ترتيب الإخراج عن ترتيب الإدخال.

2. إضافة وتحديث العناصر

استخدم طريقة add() لإضافة عنصر واحد وطريقة update() لإضافة عناصر متعددة.


my_set = {1, 2, 3}
my_set.add(4)
print(my_set)  # الإخراج: {1, 2, 3, 4}

my_set.update([5, 6, 7])
print(my_set)  # الإخراج: {1, 2, 3, 4, 5, 6, 7}

my_set.update({8, 9}, (10,))  # تحديث باستخدام مجموعة و tuple
print(my_set)  # الإخراج: {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}

3. إزالة العناصر

تسمح العديد من الطرق بإزالة العناصر. remove() تُثير خطأ KeyError إذا لم يُعثر على العنصر، بينما discard() لا تفعل ذلك.


my_set = {1, 2, 3, 4, 5}

my_set.remove(3)  # يُثير KeyError إذا لم يُعثر على العنصر
print(my_set)  # الإخراج: {1, 2, 4, 5}

my_set.discard(6)  # لا يُثير خطأ إذا لم يُعثر على العنصر
print(my_set)  # الإخراج: {1, 2, 4, 5}

removed_element = my_set.pop()  # يزيل ويرجع عنصرًا عشوائيًا
print(removed_element)  # الإخراج: (عنصر عشوائي)
print(my_set)

my_set.clear()  # يزيل جميع العناصر
print(my_set)  # الإخراج: set()

4. عمليات المجموعات

تدعم المجموعات عمليات المجموعات الرياضية القياسية:


set1 = {1, 2, 3}
set2 = {3, 4, 5}

# الاتحاد: يُدمج العناصر من كلا المجموعتين
union_set = set1 | set2  # أو set1.union(set2)
print(union_set)  # الإخراج: {1, 2, 3, 4, 5}

# التقاطع: العناصر الموجودة في كلا المجموعتين
intersection_set = set1 & set2  # أو set1.intersection(set2)
print(intersection_set)  # الإخراج: {3}

# الفرق: العناصر الموجودة في set1 ولكن ليس في set2
difference_set = set1 - set2  # أو set1.difference(set2)
print(difference_set)  # الإخراج: {1, 2}

# الفرق المتناظر: العناصر الموجودة في set1 أو set2، ولكن ليس كليهما
symmetric_difference_set = set1 ^ set2  # أو set1.symmetric_difference(set2)
print(symmetric_difference_set)  # الإخراج: {1, 2, 4, 5}

5. طرق المجموعات

يوفر بايثون العديد من الطرق المدمجة لمعالجة المجموعات:


my_set = {1, 2, 3, 4, 5}

print(my_set.issubset({1, 2, 3, 4, 5, 6}))  # True
print(my_set.issuperset({1, 2}))  # True
print(my_set.isdisjoint({6, 7, 8}))  # True - لا توجد عناصر مشتركة
print(my_set.copy()) #  يُنشئ نسخة سطحية من المجموعة

6. عمليات المجموعات الأخرى

إلى جانب العمليات الأساسية، يمكنك التحقق من العضوية، وإيجاد الطول، والمزيد:


my_set = {1, 2, 3}
print(1 in my_set)  # الإخراج: True
print(4 not in my_set)  # الإخراج: True
print(len(my_set))  # الإخراج: 3

7. الدوال المدمجة مع المجموعات

تُعمل الدوال مثل all()، any()، sum()، min()، max() مع المجموعات:


my_set = {1, 2, 3, 4, 5}
print(sum(my_set))  # الإخراج: 15
print(min(my_set))  # الإخراج: 1
print(max(my_set))  # الإخراج: 5
print(all(x > 0 for x in my_set))  # الإخراج: True
print(any(x == 0 for x in my_set))  # الإخراج: False

8. مجموعات ثابتة (Frozensets)

frozenset يُنشئ مجموعة غير قابلة للتغيير. بمجرد إنشائها، لا يمكنك إضافة أو إزالة عناصر. إنها مفيدة كمفاتيح قاموس أو عناصر مجموعات أخرى.


my_frozenset = frozenset({1, 2, 3})
# my_frozenset.add(4)  # هذا سيُثير خطأ AttributeError
print(my_frozenset)  # الإخراج: frozenset({1, 2, 3})

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *