مجموعات البيانات Set في Python

مجموعات البيانات Sets في Python المفهوم والانشاء وعمليات لاتحاد Union و التقاطع Intersection و الفرقDifference والفرق التناظري Symmetric difference

مجموعات البيانات Set في Python

ماهي مجموعات البيانات Sets في بايثون…؟! أين تصنف Set بين مجموعات البيانات في بايثون ..؟؟!! وكيف يتم انشاء مجموعة Set في بايثون..؟!! ماهي خصائص مجموعات Set في بايثون..؟! وكيف يتم تطبيق عمليات الرياضيات على مجموعات على Set من خلال تعليمات لغة Python..؟؟!!

مجموعات البيانات Set في Python

من مجموعات البيانات في Python مجموعة البيانات Set هي نوع من البيانات المتقدمة في Python وهي مخصصة لتخزين مجموعة من القيم المختلفة والفريدة . في هذا المقال سنتحدث عن نوع من انواع مجموعات البيانات في بايثون وهو مجموعة البيانات Sets. سنرى طريقة إنشاء Set في Python والتعامل معها من خلال تعليمات لغة Python .

في هذا المقال نتعرف على :



ماهي مجموعات البيانات في Python

ذكرنا في مقال أنواع البيانات في Data Types in Python  أن مجموعات البيانات هي حاويات تضم مجموعة من البيانات وتوفر Python مجموعة متنوعة من مجموعات البيانات يمكن تقسيمها الى فئات لكل فئة من هذه الفئات خصائصها Properties ودوال Methods للعمل معها وهي في Python تعبر عن الـ Data Structure .و هذه الفئات التالي:

في هذا المقال سنشرح ونفصل الفئة الثانية وهي مجموعات البيانات Set types والتي تتمثل في Sets في هذا المقال سنشرح ونفصل مجموعات البيانات الغير مرتبة Set في بايثون.



مجموعات البيانات Set Types

المجموعات Sets في لغة Python هي مجموعة غير مرتبة من البيانات، يمكن أن تحتوي على صفر أو أكثر من العناصر التي يمكن أن تكون أي نوع من أنواع البيانات او يمكن أن تكون عناصرها هي مجموعة بيانات من نوع Tuple أو Set ولايمكن ان يكون العنصر يمثل قائمة بيانات من نوع List . يوضح الشكل التالي طبيعة العناصر التي يمكن أن تحتويها مجموعة بيانات من نوع Set في بايثون :

مجموعات البيانات Set Types



إنشاء مجموعات البيانات 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 توفر بايثون الدوال الآتية:

إضافة العناصر الى مجموعات البيانات Sets في بايثون

وهنا مثال يوضح طريقة عمل دوال اضافة العنااصر الى مجموعات البيانات 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 وتختلف استخدامتها كما يتضح في الشكل التالي:

حذف العناصر من مجموعات البيانات Sets في Python

وهنا مثال يوضح طريقة عمل دوال حذف العنااصر من مجموعات 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 بدوال تؤدي عمل العملية تماماً كما في الرياضيات ومن هذه العمليات:

لنرى طريقة تنفيذ العمليات الرياضية على مجموعات Set في بايثون :


الاتحاد Union في مجموعات البيانات Sets

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

الاتحاد Union في مجموعات البيانات Sets

وتنفذ عملية الاتحاد على مجموعات البيانات Sets في Python بواسطة الدوال التالية :

عملية الاتحاد على مجموعات البيانات 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 بالدوال التالية :

التقاطع بين مجموعات البيانات 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

ونعني بالفرق بين مجموعتين إنتاج مجموعة تضم عناصر من المجموعة الأولى والتي لا تنتمي الى المجموعة الثانية كما يتضح في الشكل التالي:

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

وتنفذ الدوال التالية عملية الفرق بين مجموعات البيانات Sets في Python :

difference functions in 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

ويمثل الفرق التناظري بمجموعة تضم العناصر من المجموعة الاولى التي لا تنتمي الى المجموعة الثانية و العناصر من المجموعة الثانية التي لا تنتمي إلى المجموعة الأولى. باختصار هو الفرق بين اتحاد مجموعتين وتقاطعها ويتضح معنى الفرق التناظري بالشكل التالي:

الفرق التناظري Symmetric Difference بين مجموعات البيانات Sets

و تنفذ الدوال التالية عملية الفرق التناظري بين مجموعات البيانات Sets في Python :

لفرق التناظري بين مجموعات البيانات 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 function in python

وهنا أمثلة على طريقة تنفيذ دوال التحقق على مجموعات البيانات 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.



إرسال تعليق

فضلاً اترك تعليق
موافقة ملفات تعريف الارتباط
لتحسين تجربتك… يستخدم موقعنا ملفات تعريف الارتباط (Cookies)
Oops!
It seems there is something wrong with your internet connection. Please connect to the internet and start browsing again.
AdBlock Detected!
We have detected that you are using adblocking plugin in your browser.
The revenue we earn by the advertisements is used to manage this website, we request you to whitelist our website in your adblocking plugin.
Site is Blocked
Sorry! This site is not available in your country.