الدرس 5 من 10
القوائم وتعديلها
- 13 دقيقة
- 6 فحوص
- 3 تلميحات
- إلى المطلوب
هدف الدرس
أضف واحذف وانسخ
الشرح
القائمة تحفظ عدّة قيم بترتيب معيّن، مثل queue = ["سارة", "عمر"]، وتقرأ منها كما تقرأ من النصّ تمامًا، فـ queue[0] هو الأول، وqueue[-1] هو الأخير، وqueue[:2] يعطيك أول اثنين في قائمة جديدة. وlen(queue) تعطيك عدد العناصر، و"عمر" in queue تسأل هل «عمر» موجود فيها.
والفرق بينها وبين النصّ أنها تتغيّر، فـ append(x) تضيف عنصرًا في آخرها، وinsert(0, x) تضيفه في الموضع الذي تختاره، وremove(x) تحذف أول ظهور للقيمة، وpop(0) تحذف العنصر الذي في الموضع المحدّد وتُرجعه لك. وكل هذه الدوال تعدّل القائمة نفسها ولا تُنشئ قائمة جديدة.
ومن هنا يأتي أشهر أخطاء القوائم، فالسطر b = a لا ينسخ شيئًا، بل يعطي القائمة نفسها اسمًا ثانيًا، فإذا عدّلت b تغيّرت a معها. أما إذا أردت نسخة مستقلّة فاكتب a.copy().
المطلوب
اجعل queue نسخة من original، وعدّل النسخة وحدها: أضف «خالد» إلى آخر الطابور، وضع «نور» في أوّله لأن لها الأولوية، واحذف «عمر» لأنه غادر. بعد ذلك يُخدم أول شخص في الطابور، فاحذفه منه واحفظه في served. وأخيرًا ضع في next_two أول اثنين بقيا في الطابور.
الفحوص
6 فحوص- القائمة original لم تتغيّر لأن queue نسخة وليست اسمًا ثانيًا
- خالد في آخر الطابور
- عمر غادر الطابور
- قيمة served هي «نور» لأنها خُدمت أوّلًا
- الطابور بعد ذلك سارة ثم ليان ثم خالد
- القائمة next_two فيها أول اثنين في الطابور