مجموعات البيانات Set في Python
ماهي مجموعات البيانات Sets في بايثون…؟! أين تصنف Set بين مجموعات البيانات في بايثون ..؟؟!! وكيف يتم انشاء مجموعة Set في بايثون..؟!! ماهي خصائص مجموعات Set في بايثون..؟! وكيف يتم تطبيق عمليات الرياضيات على مجموعات على Set من خلال تعليمات لغة Python..؟؟!!
من مجموعات البيانات في Python مجموعة البيانات Set هي نوع من البيانات المتقدمة في Python وهي مخصصة لتخزين مجموعة من القيم المختلفة والفريدة . في هذا المقال سنتحدث عن نوع من انواع مجموعات البيانات في بايثون وهو مجموعة البيانات Sets. سنرى طريقة إنشاء Set في Python والتعامل معها من خلال تعليمات لغة Python .
في هذا المقال نتعرف على :
- مجموعات البيانات Set Types.
- إنشاء مجموعات البيانات Set في Python.
- خصائص مجموعات البيانات Sets في Python.
- الوصول إلى عناصر Sets.
- إضافة وحذف العناصر في مجموعات البيانات Sets.
- تنفيذ عمليات الرياضيات على مجموعات البيانات Sets في Python.
ماهي مجموعات البيانات في Python
ذكرنا في مقال أنواع البيانات في Data Types in Python أن مجموعات البيانات هي حاويات تضم مجموعة من البيانات وتوفر Python مجموعة متنوعة من مجموعات البيانات يمكن تقسيمها الى فئات لكل فئة من هذه الفئات خصائصها Properties ودوال Methods للعمل معها وهي في Python تعبر عن الـ Data Structure .و هذه الفئات التالي:
- البيانات التسلسلية Sequence types وتتمثل في list, tuple, range.
- مجموعات البيانات Set types وتتمثل في set.
- البيانات التخطيطية Mapping types وتتمثل في dir.
في هذا المقال سنشرح ونفصل الفئة الثانية وهي مجموعات البيانات Set types والتي تتمثل في Sets في هذا المقال سنشرح ونفصل مجموعات البيانات الغير مرتبة Set في بايثون.
مجموعات البيانات Set Types
المجموعات Sets في لغة Python هي مجموعة غير مرتبة من البيانات، يمكن أن تحتوي على صفر أو أكثر من العناصر التي يمكن أن تكون أي نوع من أنواع البيانات او يمكن أن تكون عناصرها هي مجموعة بيانات من نوع Tuple أو Set ولايمكن ان يكون العنصر يمثل قائمة بيانات من نوع List . يوضح الشكل التالي طبيعة العناصر التي يمكن أن تحتويها مجموعة بيانات من نوع Set في بايثون :
إنشاء مجموعات البيانات Set في Python
وهنا مثال يوضح كيف طريقة انشاء Set في Python حيث تستخدم الأقواس المتعرجة Curly braces .{...} للتميز ان مجموعة البيانات من نوع Set:
...........
#an empty set
s = {}
print(s)
myset = {1, -2, 2, 0, (1,2,3), frozenset({1,2,3}),'Hello', True }
print(myset)
...........
الـ Output للمثال:
{} {0, 1, 2, (1, 2, 3), 'Hello', frozenset({1, 2, 3}), -2}
نلاحظ في النتائج عدم طباعة True وهذا لأن القيمتان True و 1 تعتبر نفس القيمة في مجموعات Sets ، ويتم التعامل معها على أنها مكررة لهذا يتم طباعة إحداهما فقط. حيث تتميز Set بأنها تحتوي على مجموعة من العناصر الفريدة ولا تسمح بوجود عناصر مكررة. هذا يعني أنه يمكن استخدامها لإزالة العناصر المكررة من list أو tuple ، أو استخدامها كأداة لتخزين مجموعة فريدة من العناصر.
كما نلاحظ في المثال استخدام الدالة frozenset({1,2,3}) حيث تستخدم للتعبير عن تجميد المجموعة Set بحجم ثابت لا يقبل التغيير فلا يمكن اضافة عناصر لها او حتي حذف عناصر منها .وأي مجموعة بيانات من نوع Set تمثل عنصر من عناصر في مجموعة اخرى من نوع Set لابد ان تكون مجموعة frozenset كما يظهر في المثال السابق .
ويمكن تحويل أي مجموعة من مجموعات البيانات سواء كانت نوع Set أو من نوع اخر الى مجموعة مجمدة بواسطة الداله frozenset() كما يتضح في المثال التالي :
...........
x = frozenset({ 1, 2, 3, 4})
y = frozenset((1, 2, 3))
z = frozenset([1,2,3])
e = frozenset(set ())
f = frozenset()
print(type(x))
print(type(y))
print(type(z))
print(type(e))
print(type(f))
...........
يمكن أيضاً، استخدام الدالة set() لإنشاء مجموعة بيانات من نوع Set في Python أو تحويل اي مجموعة من نوع بيانات آخر مثل مجموعات البيانات التسلسلية List و Tuples الى مجموعة بيانات من نوع Set كما يتضح معنا في المثال التالي :
...........
x = set(frozenset({ 1, 2, 3, 4}))
y = set((1, 2, 3))
z = set([1,2,3])
e = set(set ())
f = set()
print(type(x))
print(type(y))
print(type(z))
print(type(e))
print(type(f))
...........
في Python يمكن التعامل مع مجموعة البيانات Sets كما يتم التعامل مع مجموعات البيانات التسلسلية Lists و Tuples عمل نسخة من بواسطة الدالة copy() او ارجاع طول المجموعة set من خلال الدالة len() كما يتضح في المثال التالي :
...........
myset = {1, -2, 2, 0, (1,2,3), frozenset({1,2,3}),'Hello', True }
x = myset.copy()
print(x)
y = len(x)
print(y)
...........
الـ Output للمثال:
{0, 1, 2, 'Hello', frozenset({1, 2, 3}), (1, 2, 3), -2} 7
خصائص مجموعات البيانات Sets
من خصائص مجموعات البيانات Sets انها لا تسمح بقيم مكررة كما أن عناصر مجموعات البيانات Sets غير مرتبة وغير قابلة للتغيير.
- لا تسمح Set بقيم مكررة لا يمكن أن تحتوي المجموعات Sets على عنصرين بنفس القيمة. كما رأينا في المثال اعتبرت True و 1 عنصر واحد.
- عناصر غير مرتبة وغير مرتبة تعني أن العناصر الموجودة في مجموعة ليس لها ترتيب محدد. يمكن أن تظهر عناصر المجموعة بترتيب مختلف في كل مرة تستخدمها ، ولا يمكن الإشارة إليها عن طريق الفهرسة Indexing.
- وغير قابلة للتغيير مما يعني أنه لا يمكننا تغيير العناصر بعد إنشاء المجموعة set .التغيير المعني هنا هو التغيير على قيم العناصر ولكن يمكن التعديل على المجموعة من خلال اضافة وحذف العناصر لها .
الوصول إلى عناصر Sets
الوصول الى عناصر Set بما أن عناصر Set غير مرتبة فلا يمكن الوصول الى عنصر معين ولكن يمكن الوصول بواسطة حلقة for أو التحقق مما إن كانت قيمة معينة موجود في المجموعة Set أو لا كما هو موضح في المثال التالي:
...........
myset = {1, -2, 2, 0, (1,2,3), frozenset({1,2,3}),'Hello', True }
for x in myset:
print(x)
#check if 'Hi' is an item in myset
print( 'Hi' in myset)
...........
إضافة وحذف العناصر في مجموعات البيانات Sets
أولاً : إضافة العناصر الى مجموعات البيانات Sets
لإضافة عناصر إلى مجموعة البيانات Set توفر بايثون الدوال الآتية:
وهنا مثال يوضح طريقة عمل دوال اضافة العنااصر الى مجموعات البيانات set الدوال :
...........
#add one item
S = { 1, 2, 3}
S.add(4)
print(S)
#add set
A = { 1, 2, 3, 4}
B = { 3, 4, 5, 6 }
A.update(B)
print(A)
...........
الـ Output للمثال:
{1, 2, 3, 4} {1, 2, 3, 4, 5, 6}
ثانياً : حذف العناصر من مجموعات البيانات Sets
توفر بايثون عدد من دوال لحذف العناصر من مجوعات البياانات Set وتختلف استخدامتها كما يتضح في الشكل التالي:
وهنا مثال يوضح طريقة عمل دوال حذف العنااصر من مجموعات Set :
...........
myset = {1, -2, 2, 0, (1,2,3), frozenset({1,2,3}),'Hello', True }
myset.remove(2)
print(myset)
myset.discard('Hello')
print(myset)
myset.pop()
print(myset)
myset.clear()
print(myset)
del(myset)
...........
الـ Output للمثال:
{0, 1, (1, 2, 3), 'Hello', frozenset({1, 2, 3}), -2} {0, 1, (1, 2, 3), frozenset({1, 2, 3}), -2} {1, (1, 2, 3), frozenset({1, 2, 3}), -2} set()
تنفيذ عمليات الرياضيات على مجموعات البيانات Sets في Python
تتميز Set بأنها سريعة جدًا في البحث عن العناصر ويمكن استخدام الدوال المختلفة لتنفيذ العديد من العمليات عليها.كما يمكن استخدام Set لإجراء العمليات الرياضية مثل الاتحاد والتقاطع والفرق، وكذلك لإجراء عمليات المقارنة بين مجموعات مختلفة. حيث تدعم Python العمليات الرياضية مع مجموعات البيانات Set بدوال تؤدي عمل العملية تماماً كما في الرياضيات ومن هذه العمليات:
- الاتحاد Union في مجموعات البيانات Sets.
- التقاطع Intersection في مجموعات البيانات Sets.
- الفرق Difference بين في مجموعات البيانات Sets.
- الفرق التناظريSymmetric Difference بين مجموعات البيانات Sets.
لنرى طريقة تنفيذ العمليات الرياضية على مجموعات Set في بايثون :
الاتحاد Union في مجموعات البيانات Sets
تعرف عملية الاتحاد Union بأنها عملية دمج للمجموعات فعند اتحاد مجموعتين فإن النتيجة تكون مجموعة جديدة تضم جميع العناصر الموجودة في المجموعتين ويوضح الشكل التالي عملية الاتحاد :
وتنفذ عملية الاتحاد على مجموعات البيانات Sets في Python بواسطة الدوال التالية :
نلاحظ وجود الدالة update() هذا لأنها تعطي نفس النتيجة للدالة union() وهنا مثال على تنفيذ عملية الاتحاد على مجموعات البياانت Set بواسطة تعليمات بايثون:
...........
A = { 1, 2, 3, 4}
B = { 3, 4, 5, 6 }
# using union
x = A.union(B)
print(x)
#using update
A.update(B)
print(A)
...........
الـ Output للمثال:
{1, 2, 3, 4, 5, 6} {1, 2, 3, 4, 5, 6}
التقاطع Intersection في مجموعات البيانات Sets
عندما تتقاطع مجموعتان فإن النتيجة تكون مجموعة جديدة تضم فقط العناصر المشتركة بين المجموعتين تماماً كم يتضح في الشكل التالي :
و تمثل عملية التقاطع بين مجموعات البيانات Sets في Python بالدوال التالية :
وهنا مثال على طريقة تنفيذ عملية التقاطع على مجموعات البيانات Set في بايثون:
...........
A = { 1, 2, 3, 4}
B = { 3, 4, 5, 6 }
# using intersection
x = A.intersection(B)
print(x)
# using intersection_update
A.intersection_update(B)
print(A)
...........
الـ Output للمثال:
{3, 4} {3, 4}
الفرق Difference بين في مجموعات البيانات Sets
ونعني بالفرق بين مجموعتين إنتاج مجموعة تضم عناصر من المجموعة الأولى والتي لا تنتمي الى المجموعة الثانية كما يتضح في الشكل التالي:
وتنفذ الدوال التالية عملية الفرق بين مجموعات البيانات Sets في Python :
وهنا مثال يوضح طريقة تنفيذ عملية الفرق بين مجموعات البيانات Set في بايثون :
...........
A = { 1, 2, 3, 4}
B = { 3, 4, 5, 6 }
# Using difference
x = A.difference(B)
print(x)
# Using difference_update
A.difference_update(B)
print(A)
...........
الـ Output للمثال:
{1, 2} {1, 2}
الفرق التناظري Symmetric Difference بين مجموعات البيانات Sets
ويمثل الفرق التناظري بمجموعة تضم العناصر من المجموعة الاولى التي لا تنتمي الى المجموعة الثانية و العناصر من المجموعة الثانية التي لا تنتمي إلى المجموعة الأولى. باختصار هو الفرق بين اتحاد مجموعتين وتقاطعها ويتضح معنى الفرق التناظري بالشكل التالي:
و تنفذ الدوال التالية عملية الفرق التناظري بين مجموعات البيانات Sets في Python :
وهنا مثال يوضح تنفيذ الفرق التناظري بين مجموعات البيانات Set في بايثون :
...........
A = { 1, 2, 3, 4}
B = { 3, 4, 5, 6 }
#Using symmetric_difference
x = A.symmetric_difference(B)
print(x)
#Using symmetric_difference_update
A.symmetric_difference_update(B)
print(A)
...........
الـ Output للمثال:
{1, 2, 5, 6} {1, 2, 5, 6}
وتوفر Python أيضاً مجموعة دوال تعمل على مجموعات البيانات Set للتحقق من حالة مجموعات البيانات مثل التحقق من المجموعات الجزئية والشاملة وبالطبع ستكون القيمة المرجعة من هذه الدوال إما True أو False ومن هذه الدوال مايلي:
وهنا أمثلة على طريقة تنفيذ دوال التحقق على مجموعات البيانات Set في بايثون :
الدالة isdisjoint()
...........
A = { 1, 2, 3, 4}
B = { 3, 4, 5, 6 }
C = {7, 8, 9}
print(A.isdisjoint(B))
print(A.isdisjoint(C))
...........
الـ Output للمثال:
False True
الدالة issubset()
...........
C = {7, 8, 9}
D = {1, 2, 3, 4, 5, 6, 7, 8, 9}
print(C.issubset(D))
print(D.issubset(C))
...........
الـ Output للمثال:
True False
الدالة issuperset()
...........
C = {7, 8, 9}
D = {1, 2, 3, 4, 5, 6, 7, 8, 9}
print(D.issuperset(C))
print(C.issuperset(D))
...........
الـ Output للمثال:
True False
جميع الأمثلة لهذا المقال هنا.
إلى هنا ينتهي هذا المقال الذي تكلم عن نوع من انواع مجموعات البيانات التي توفرها لغة Python وهي مجموعات البيانات Sets عرفنا فيه على مفهوم Sets وخصائصها وطريقة اضافة وحذف العناصرعلى مجموعات البيانات Set، و كيف تترجم عمليات المجموعات في الرياضيات على مجموعات البيانات Set من خلال تعليمات لغة Python.