الصفوف والمجموعات في Python (Tuples و Sets)
تعرفت على القوائم، وهي أشهر طريقة لحفظ مجموعة من القيم. لكن Python تقدّم أنواعاً أخرى لكل منها ميزة خاصة. في هذا الدرس ستتعرف على الصفوف (Tuples) التي لا تتغير أبداً، والمجموعات (Sets) التي لا تقبل التكرار، ومتى تختار كل واحد منهما.
الصفوف (Tuples)
Section titled “الصفوف (Tuples)”الصف يشبه القائمة، لكنه ثابت: بعد إنشائه لا يمكنك تعديله أو الإضافة إليه أو الحذف منه. يُكتب بين قوسين عاديين ( ):
point = (3, 5)print(point)print(point[0])(3, 5)3الوصول إلى العناصر يتم بالفهرس تماماً مثل القوائم. لكن جرّب أن تعدّل:
point[0] = 10TypeError: 'tuple' object does not support item assignmentتخيّل الصف مثل تاريخ ميلادك المكتوب في شهادة الميلاد: اليوم والشهر والسنة مرتبطة ببعضها، ولا يجب أن يتغير أي منها أبداً.
لماذا نستخدم الصفوف؟
Section titled “لماذا نستخدم الصفوف؟”- الحماية: عندما تريد بيانات لا يجب أن تتغير بالخطأ، مثل إحداثيات نقطة أو أيام الأسبوع.
- السرعة: الصفوف أسرع قليلاً من القوائم وتستهلك ذاكرة أقل.
- إرجاع عدة قيم من دالة: ستراه في درس الدوال.
فك الصف (Unpacking)
Section titled “فك الصف (Unpacking)”يمكنك توزيع عناصر الصف على عدة متغيرات في سطر واحد:
point = (3, 5)x, y = pointprint(x, y)3 5ومن أجمل استخداماته تبديل قيمتي متغيرين بدون متغير ثالث:
a, b = 1, 2a, b = b, aprint(a, b)2 1المجموعات (Sets)
Section titled “المجموعات (Sets)”المجموعة تحتوي على عناصر فريدة، أي لا تقبل التكرار، وليس لها ترتيب ثابت. تُكتب بين قوسين معقوفين { }:
nums = {3, 1, 2, 3, 1}print(nums){1, 2, 3}كتبنا خمسة أرقام، لكن المجموعة احتفظت بثلاثة فقط، لأنها تحذف المكرر تلقائياً.
تخيّل المجموعة مثل ألبوم ملصقات: لكل ملصق مكان واحد، وإذا حصلت على ملصق لديك منه بالفعل، فلن تلصقه مرة ثانية.
الإضافة والحذف والبحث
Section titled “الإضافة والحذف والبحث”nums = {1, 2, 3}nums.add(4)print(nums)nums.discard(1)print(nums)print(2 in nums){1, 2, 3, 4}{2, 3, 4}Trueالبحث بـ in في المجموعة سريع جداً، حتى لو كان فيها ملايين العناصر.
استخدام شائع: حذف المكرر من قائمة
Section titled “استخدام شائع: حذف المكرر من قائمة”grades = [90, 85, 90, 70, 85]print(set(grades))print(len(set(grades))){90, 85, 70}3حوّلنا القائمة إلى مجموعة، فبقيت الدرجات المختلفة فقط. وعرفنا أن هناك 3 درجات مختلفة.
عمليات المجموعات
Section titled “عمليات المجموعات”مثل المجموعات في الرياضيات تماماً:
a = {1, 2, 3}b = {2, 3, 4}print(a | b) # الاتحاد: كل العناصرprint(a & b) # التقاطع: المشتركprint(a - b) # الفرق: في a وليس في b{1, 2, 3, 4}{2, 3}{1}مثال من الحياة: إذا كانت a أصدقاءك و b أصدقاء أخيك، فإن a & b هم الأصدقاء المشتركون بينكما.
مقارنة سريعة
Section titled “مقارنة سريعة”القائمة list |
الصف tuple |
المجموعة set |
|
|---|---|---|---|
| الكتابة | [1, 2] |
(1, 2) |
{1, 2} |
| مرتبة؟ | نعم | نعم | لا |
| قابلة للتعديل؟ | نعم | لا | نعم (إضافة وحذف) |
| تقبل التكرار؟ | نعم | نعم | لا |
جرّب بنفسك
Section titled “جرّب بنفسك”عندك قائمتان بأسماء طلاب اشتركوا في نشاطين:
football = ["علي", "عمر", "سارة", "علي"]chess = ["سارة", "منى", "عمر"]اكتب برنامجاً يطبع: عدد الطلاب المختلفين في كرة القدم، والطلاب المشتركين في النشاطين، وكل الطلاب بدون تكرار. (ترتيب الأسماء داخل المجموعة قد يختلف عندك).
أخطاء شائعة
Section titled “أخطاء شائعة”- محاولة تعديل صف: تسبب
TypeError. إذا احتجت التعديل، استخدم قائمة. - استخدام
{}لمجموعة فارغة: تنشئ قاموساً. استخدمset(). - الاعتماد على ترتيب المجموعة: المجموعة بلا ترتيب. إذا احتجت ترتيباً، حوّلها لقائمة واستخدم
sorted().
اختبر نفسك
Section titled “اختبر نفسك”سؤال
ما ناتج len({5, 5, 6, 6, 6})؟
المجموعة تحذف المكرر، فيبقى فيها 5 و 6 فقط.
سؤال
أي نوع لا يمكن تعديله بعد إنشائه؟
الصف ثابت (Immutable)، ولا يقبل تعديل عناصره أو الإضافة إليه.
الخلاصة
Section titled “الخلاصة”- الصف
( )مثل القائمة لكنه ثابت لا يتغير، ومفيد لحماية البيانات. - فك الصف
x, y = pointيوزع عناصره على متغيرات، ويبدّل القيم بسهولة. - المجموعة
{ }لا تقبل التكرار وليس لها ترتيب. set(قائمة)تحذف المكرر، و|و&و-لعمليات الاتحاد والتقاطع والفرق.- المجموعة الفارغة تُنشأ بـ
set()وليس{}.