بايثون - Sets

مفهوم الكلاس set

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

النوع set لا يمكنه أن يحتوي على قيم مكررة، مما يعني أنه إذا تم وضع نفس القيمة فيه مرتين فإنه يتم تخزين قيمة واحدة فيه و ليس قيمتين.

النوع set لا يضيف رقم فهرس ( Index ) لكل عنصر كما يفعل النوع list و النوع tuple مما يعني أنه لا يحافظ على الترتيب الذي تم فيه إدخال العناصر.

إذا قمت بتخزين مجموعة قيم بداخل set و حاولت عرضها فإنك لا تضمن الترتيب الذي سيتم فيه عرضها.


طريقة تعريف set

لتعريف set نستخدم الرمز { } و بداخله نمرر القيم بشكل مباشر له مع الإشارة إلى أنه يجب وضع فاصلة بين كل قيمتين.


في المثال التالي قمنا بتعريف set وضعنا فيه أعداد صحيحة.

المثال الأول

Test.py
numbers = {10, 20, 30, 40, 50}       # يحتوي على أعداد صحيحة فقط numbers إسمه set هنا قمنا بتعريف
print(numbers)                       # ( أي كما قمنا بتعريفه ) كما هو numbers هنا قمنا بعرض محتوى الكائن

سنحصل على نتيجة مشابهة لأننا لا نعرف كيف سيتم ترتيب العناصر.

{40, 10, 50, 20, 30}

في المثال التالي قمنا بتعريف set وضعنا فيه نصوص.

المثال الثاني

Test.py
names = {'Rami', 'Sara', 'Nada'}      # يحتوي على نصوص فقط names إسمه set هنا قمنا بتعريف
print(names)                          # ( أي كما قمنا بتعريفه ) كما هو names هنا قمنا بعرض ما يحتويه الكائن

سنحصل على نتيجة مشابهة لأننا لا نعرف كيف سيتم ترتيب العناصر.

{'Sara', 'Rami', 'Nada'}

في المثال التالي قمنا بتعريف set وضعنا فيه أعداد صحيحة و نصوص.

المثال الثالث

Test.py
data = {1, 'Mhamad', 'Harmush', 1500}      # يحتوي على أعداد صحيحة و نصوص data إسمه set هنا قمنا بتعريف
print(data)                                # ( أي كما قمنا بتعريفه ) كما هو data هنا قمنا بعرض ما يحتويه الكائن

سنحصل على نتيجة مشابهة لأننا لا نعرف كيف سيتم ترتيب العناصر.

{'Harmush', 1, 1500, 'Mhamad'}

في المثال التالي قمنا بتعريف set وضعنا فيه نصوص و قمنا بتكرار هذه النصوص عن قصد لإثبات فكرة أن النوع set لا يقوم بتخزين نفس القيمة أكثر من مرة.

المثال الرابع

Test.py
# يحتوي على نصوص و لاحظ أننا قمنا بتكرار بعض القيم names إسمه set هنا قمنا بتعريف
names = {'Rami', 'Rami', 'Rami', 'Nada', 'Nada', 'Ahmad'}

# ( أي كما قمنا بتعريفه ) كما هو و لاحظ أنه لا يحتوي على قيم مكررة names هنا قمنا بعرض ما يحتويه الكائن
print(names)

سنحصل على نتيجة مشابهة لأننا لا نعرف كيف سيتم ترتيب العناصر.

{'Ahmad', 'Rami', 'Nada'}

جاهز لرحلة التحدي؟

قم بتوليد تمارين لا نهائية بشكل تدريجي (10 في كل مرة) بناءً على هذا الدرس. كل تمرين مصمم لرفع مستوى تفكيرك المنطقي.