اضبط العمليات (على سبيل المثال ، تحديد مجموعات الاتحاد ومجموعات المنتجات والمجموعات الفرعية) باستخدام نوع مجموعة Python

اعمال

توفر Python نوع بيانات مضمّنًا ، مجموعة ، تتعامل مع المجموعات.

مجموعة الكتابة عبارة عن مجموعة من العناصر غير المكررة (العناصر التي ليست نفس القيمة ، والعناصر الفريدة) ويمكنها إجراء عمليات محددة مثل مجموعة الاتحاد ومجموعة المنتجات ومجموعة الفروق.

في هذا القسم ، يتم شرح العمليات الأساسية في عمليات مجموعة النوع باستخدام نموذج التعليمات البرمجية.

  • إنشاء مجموعة الكائنات:{}وset()
  • تعيين تدوين التضمين
  • عدد العناصر في المجموعة:len()
  • إضافة عنصر إلى مجموعة:add()
  • إزالة عنصر من مجموعة:discard()وremove()وpop()وclear()
  • الوسيط (اندماج ، اتحاد):عامل التشغيل,union()
  • مجموعات المنتجات (الأجزاء المشتركة ، التقاطعات ، التقاطعات):& أمبير ؛ المشغل أو العامل,intersection()
  • مكمل نسبي:-المشغل أو العامل,difference()
  • مجموعة فرق التماثل:^ عامل,symmetric_difference()
  • مجموعة فرعية أم لا:العلامة & lt ؛ = عامل التشغيل,issubset()
  • مجموعة العلوي أم لا:& GT ؛ = عامل التشغيل,issuperset()
  • تحديد ما إذا كانت أساسية بشكل متبادل أم لا:isdisjoint()

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

إنشاء كائن المجموعة::{}وset()

تم إنشاؤها بواسطة أقواس الموجة {}

يمكن إنشاء كائنات من مجموعة النوع بإحاطة العناصر بأقواس {}.

إذا كانت هناك قيم مكررة ، فسيتم تجاهلها وتبقى القيم الفريدة فقط كعناصر.

s = {1, 2, 2, 3, 1, 4}

print(s)
print(type(s))
# {1, 2, 3, 4}
# <class 'set'>

من الممكن أن يكون لها أنواع مختلفة كعناصر. ومع ذلك ، لا يمكن تسجيل الكائنات القابلة للتحديث مثل أنواع القوائم. يسمح Tuples.

أيضًا ، نظرًا لأن أنواع المجموعات غير مرتبة ، لا يتم تخزين الترتيب الذي يتم إنشاؤها به.

s = {1.23, 'abc', (0, 1, 2), 'abc'}

print(s)
# {(0, 1, 2), 1.23, 'abc'}

# s = {[0, 1, 2]}
# TypeError: unhashable type: 'list'

تعتبر الأنواع المختلفة ، مثل int و float ، تكرارات إذا كانت قيمها متساوية.

s = {100, 100.0}

print(s)
# {100}

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

s = {}

print(s)
print(type(s))
# {}
# <class 'dict'>

تم إنشاؤه بواسطة منشئ مجموعة ()

يمكن أيضًا إنشاء كائنات من مجموعة النوع باستخدام مجموعة الباني ().

يؤدي تحديد كائن قابل للتكرار مثل قائمة أو مجموعة كوسيطة إلى إنشاء كائن مجموعة عناصره عبارة عن قيم فريدة فقط ، مع استبعاد العناصر المكررة.

l = [1, 2, 2, 3, 1, 4]

print(l)
print(type(l))
# [1, 2, 2, 3, 1, 4]
# <class 'list'>

s_l = set(l)

print(s_l)
print(type(s_l))
# {1, 2, 3, 4}
# <class 'set'>

يتم إنشاء أنواع مجمدات غير قابلة للتغيير باستخدام منشئ frozenset ().

fs_l = frozenset(l)

print(fs_l)
print(type(fs_l))
# frozenset({1, 2, 3, 4})
# <class 'frozenset'>

إذا تم حذف الوسيطة ، فسيتم إنشاء كائن مجموعة فارغة (مجموعة فارغة).

s = set()

print(s)
print(type(s))
# set()
# <class 'set'>

يمكن إزالة العناصر المكررة من قائمة أو مجموعة باستخدام set () ، ولكن لا يتم الاحتفاظ بترتيب القائمة الأصلية.

لتحويل نوع مجموعة إلى قائمة أو مجموعة ، استخدم list () ، tuple ().

l = [2, 2, 3, 1, 3, 4]

l_unique = list(set(l))
print(l_unique)
# [1, 2, 3, 4]

راجع المقالة التالية للحصول على معلومات حول إزالة العناصر المكررة مع الحفاظ على الترتيب ، واستخراج العناصر المكررة فقط ، ومعالجة العناصر المكررة في مصفوفة ثنائية الأبعاد (قائمة القوائم).

تعيين تدوين التضمين

بالإضافة إلى قائمة الفهم ، هناك مجموعة من الفهم. ببساطة استبدل الأقواس المربعة [] بأقواس كبيرة {} في list comprehensions.

s = {i**2 for i in range(5)}

print(s)
# {0, 1, 4, 9, 16}

راجع المقالة التالية للحصول على مزيد من المعلومات حول تدوين قائمة الفهم.

عدد العناصر في المجموعة:len()

يمكن الحصول على عدد العناصر في المجموعة باستخدام الوظيفة المضمنة len ().

s = {1, 2, 2, 3, 1, 4}

print(s)
print(len(s))
# {1, 2, 3, 4}
# 4

إذا كنت تريد حساب عدد العناصر في كل قائمة التي تحتوي على عناصر ذات قيم مكررة ، وما إلى ذلك ، فراجع المقالة التالية.

إضافة عنصر إلى مجموعة:add()

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

s = {0, 1, 2}

s.add(3)
print(s)
# {0, 1, 2, 3}

إزالة عنصر من مجموعة:discard()وremove()وpop()وclear()

لإزالة عنصر من مجموعة ، استخدم طرق الاستبعاد () ، والإزالة () ، والبوب ​​() ، والمسح ().

الأسلوب discard () يحذف العنصر المحدد في الوسيطة. إذا تم تحديد قيمة غير موجودة في المجموعة ، فلن يتم فعل أي شيء.

s = {0, 1, 2}

s.discard(1)
print(s)
# {0, 2}

s = {0, 1, 2}

s.discard(10)
print(s)
# {0, 1, 2}

تزيل طريقة remove () أيضًا العنصر المحدد في الوسيطة ، ولكن يتم إرجاع خطأ KeyError إذا تم تحديد قيمة غير موجودة في المجموعة.

s = {0, 1, 2}

s.remove(1)
print(s)
# {0, 2}

# s = {0, 1, 2}

# s.remove(10)
# KeyError: 10

أسلوب pop () يزيل العناصر من مجموعة ويعيد قيمها. لا يمكن تحديد القيم المراد إزالتها. ستؤدي المجموعة الفارغة إلى حدوث خطأ KeyError.

s = {2, 1, 0}

v = s.pop()

print(s)
print(v)
# {1, 2}
# 0

s = {2, 1, 0}

print(s.pop())
# 0

print(s.pop())
# 1

print(s.pop())
# 2

# print(s.pop())
# KeyError: 'pop from an empty set'

طريقة clear () تزيل كل العناصر وتجعل المجموعة فارغة.

s = {0, 1, 2}

s.clear()
print(s)
# set()

الوسيط (اندماج ، اتحاد):عامل التشغيل,union()

يمكن الحصول على مجموعة الاتحاد (دمج ، اتحاد) مع | عامل أو طريقة الاتحاد ().

s1 = {0, 1, 2}
s2 = {1, 2, 3}
s3 = {2, 3, 4}

s_union = s1 | s2
print(s_union)
# {0, 1, 2, 3}

s_union = s1.union(s2)
print(s_union)
# {0, 1, 2, 3}

يمكن تحديد وسيطات متعددة لطريقة ما. بالإضافة إلى نوع المجموعة ، يمكن أيضًا تحديد القوائم والمجموعات التي يمكن تحويلها إلى نوع المجموعة بواسطة set () كوسائط. الأمر نفسه ينطبق على العوامل والطرق اللاحقة.

s_union = s1.union(s2, s3)
print(s_union)
# {0, 1, 2, 3, 4}

s_union = s1.union(s2, [5, 6, 5, 7, 5])
print(s_union)
# {0, 1, 2, 3, 5, 6, 7}

مجموعات المنتجات (الأجزاء المشتركة ، التقاطعات ، التقاطعات):& أمبير ؛ المشغل أو العامل,intersection()

يمكن الحصول على مجموعة المنتج (الجزء المشترك ، والتقاطع ، والتقاطع) باستخدام العلامة & amp؛ عامل التشغيل أو طريقة التقاطع ().

s_intersection = s1 & s2
print(s_intersection)
# {1, 2}

s_intersection = s1.intersection(s2)
print(s_intersection)
# {1, 2}

s_intersection = s1.intersection(s2, s3)
print(s_intersection)
# {2}

مكمل نسبي:-المشغل أو العامل,difference()

يمكن الحصول على مجموعة الفرق باستخدام – عامل التشغيل أو طريقة الفرق ().

s_difference = s1 - s2
print(s_difference)
# {0}

s_difference = s1.difference(s2)
print(s_difference)
# {0}

s_difference = s1.difference(s2, s3)
print(s_difference)
# {0}

مجموعة فرق التماثل:^ عامل,symmetric_difference()

يمكن الحصول على مجموعة الاختلاف المتماثل (مجموعة العناصر الموجودة في عنصر واحد فقط من الاثنين) باستخدام عامل التشغيل ^ أو symmetric_difference ().

يعادل الانفصال الحصري (XOR) في العمليات المنطقية.

s_symmetric_difference = s1 ^ s2
print(s_symmetric_difference)
# {0, 3}

s_symmetric_difference = s1.symmetric_difference(s2)
print(s_symmetric_difference)
# {0, 3}

مجموعة فرعية أم لا:العلامة & lt ؛ = عامل التشغيل,issubset()

لتحديد ما إذا كانت المجموعة مجموعة فرعية من مجموعة أخرى ، استخدم عامل التشغيل & lt؛ = أو طريقة issubset ().

s1 = {0, 1}
s2 = {0, 1, 2, 3}

print(s1 <= s2)
# True

print(s1.issubset(s2))
# True

يعود كل من عامل التشغيل & lt؛ = وطريقة issubset () إلى القيمة الصحيحة للمجموعات المكافئة.

لتحديد ما إذا كانت مجموعة فرعية صحيحة ، استخدم عامل التشغيل & lt؛ = ، الذي يُرجع خطأ للمجموعات المكافئة.

print(s1 <= s1)
# True

print(s1.issubset(s1))
# True

print(s1 < s1)
# False

مجموعة العلوي أم لا:& GT ؛ = عامل التشغيل,issuperset()

لتحديد ما إذا كانت إحدى المجموعات مجموعة شاملة لمجموعة أخرى ، استخدم & gt؛ = عامل التشغيل أو issuperset ().

s1 = {0, 1}
s2 = {0, 1, 2, 3}

print(s2 >= s1)
# True

print(s2.issuperset(s1))
# True

يعود كل من عامل التشغيل & gt؛ = وطريقة issuperset () إلى القيمة الصحيحة للمجموعات المكافئة.

لتحديد ما إذا كانت مجموعة شاملة حقيقية أم لا ، استخدم عامل التشغيل & gt؛ = ، الذي يُرجع القيمة false للمجموعات المكافئة.

print(s1 >= s1)
# True

print(s1.issuperset(s1))
# True

print(s1 > s1)
# False

تحديد ما إذا كانت أساسية بشكل متبادل أم لا:isdisjoint()

لتحديد ما إذا كانت مجموعتان أساسيتان لبعضهما البعض ، استخدم طريقة isdisjoint ().

s1 = {0, 1}
s2 = {1, 2}
s3 = {2, 3}

print(s1.isdisjoint(s2))
# False

print(s1.isdisjoint(s3))
# True