المجموعة (set)

المجموعة لا تقبل التكرار في عناصرها، ولا ترتيب لها. وتجري عليها عمليات وعلاقات المجموعات الرياضيَّة؛ وهي في غاية الأهميَّة في المنطق.

مرجع بايثون

إنشاء المجموعة

لنفترض أن لدينا مجموعتين من الأعداد، وبعض الأعداد موجود في كلتيهما:

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

منطق المجموعة الرياضية

تقبل المجموعة:

  • العمليات: الاتحاد والتقاطع والفرق والفرق التماثلي.
  • والعلاقات: الجزئية والشمول والانفصال.

العمليات على المجموعات

الاتحاد

الاتحاد يجمع عناصر المجموعتين، مع الاحتفاظ بكل عنصر مرة واحدة:

اتحاد مجموعتين

الناتج مجموعة تضم الأعداد {1, 2, 3, 4, 5, 6, 7, 8}، وقد يختلف ترتيب عرضها. العددان 4 و5 موجودان في المجموعتين، لكنهما لا يتكرران في الاتحاد. الإجراء set.union يعيد مجموعة جديدة.

التقاطع

التقاطع يحفظ العناصر المشتركة بين المجموعتين:

تقاطع مجموعتين

الناتج مجموعة تضم العددين {4, 5}، وقد يختلف ترتيب عرضهما؛ فالعددان 4 و5 وحدهما موجودان في المجموعتين. نستخدم set.intersection لإيجاد التقاطع.

الفرق

الفرق يحفظ عناصر المجموعة الأولى التي لا توجد في الثانية:

الفرق بين مجموعتين

الناتجان مجموعتان تضمّان {1, 2, 3} و{6, 7, 8} على التوالي، وقد يختلف ترتيب عرض عناصرهما. ترتيب المجموعتين مهم في set.difference: نبدأ بعناصر المجموعة التي نستدعي عليها الإجراء، ثم نستبعد منها العناصر الموجودة في المجموعة الأخرى.

الفرق التماثلي

الفرق التماثلي يحفظ العناصر الموجودة في إحدى المجموعتين فقط، ويستبعد العناصر المشتركة:

الفرق التماثلي بين مجموعتين

الناتج مجموعة تضم الأعداد {1, 2, 3, 6, 7, 8}، وقد يختلف ترتيب عرضها. يستبعد set.symmetric_difference العددين 4 و5 لأنهما موجودان في المجموعتين.

علامات العمليات

ويمكن كتابة هذه العمليات بعلامات بدل أسماء الإجراءات:

الإجراء المكافئ العلامة العملية
set1.union(set2) `set1 set2` الاتحاد
set1.intersection(set2) set1 & set2 التقاطع
set1.difference(set2) set1 - set2 الفرق
set1.symmetric_difference(set2) set1 ^ set2 الفرق التماثلي

علامة الاتحاد في بايثون هي الخط العمودي |. تتطلب هذه العلامات مجموعات على جانبيها، أما الإجراءات مثل set.union فتقبل أيضًا قائمة أو غيرها من الحاويات التي يمكن المرور على عناصرها. هذه العمليات تعيد مجموعات جديدة، ولا تغيّر set1 أو set2.

العلاقات بين المجموعات

الجزئية والشمول

إذا كانت كل عناصر مجموعة موجودة في مجموعة أخرى، فهي جزء منها، والمجموعة الأخرى تشملها:

الجزئية والشمول

الناتجان True وTrue. يتحقق set.issubset من أن كل عناصر A موجودة في B، ويتحقق set.issuperset من أن B تشمل كل عناصر A. وتصح العلاقتان أيضًا عندما تتساوى المجموعتان.

الانفصال

تكون مجموعتان منفصلتين إذا لم يوجد بينهما أي عنصر مشترك:

انفصال مجموعتين

الناتجان True وTrue؛ فلا توجد هذه الكلمات في أي من مجموعتي الأعداد. نستخدم set.isdisjoint للتحقق من الانفصال.

مقارنة العلاقات

الإجراء المكافئ العلامة أو التعبير العلاقة
A.issubset(B) A <= B الجزئية: الأولى جزء من الثانية
B.issuperset(A) B >= A الشمول: الثانية تشمل الأولى
A.isdisjoint(C) len(A & C) == 0 الانفصال: لا عناصر مشتركة