List/Dict Comprehensions
Comprehensions
List/Dict Comprehensions
في Python، هناك طريقة مختصرة وأنيقة لبناء القوائم والقواميس والمجموعات تُسمى Comprehension. بدلاً من كتابة حلقة for وثم append، تكتب كل شيء في سطر واحد داخل الهيكل نفسه.
هذا ليس مجرد اختصار للكتابة — هو طريقة مختلفة في التفكير: بدلاً من “كيف أبني هذه القائمة خطوة بخطوة”، تسأل “ما هي عناصر هذه القائمة؟”. الفرق في الأسلوب يجعل الكود أقرب لوصف القصد منه لوصف الخطوات.
من for-loop إلى List Comprehension
ابدأ بالمقارنة المباشرة لترى ما يحدث:
الصيغة الأساسية
الصيغة هي:
[التعبير for المتغير in التسلسل]
يمكنك قراءتها من اليمين: “لكل عنصر في التسلسل، احسب التعبير وضعه في القائمة.”
الفلترة بالشرط
أضف if بعد التسلسل للفلترة — فقط العناصر التي تحقق الشرط تُضاف:
التعبير والفلترة معاً
يمكنك تحويل العنصر وفلترته في نفس الوقت:
Dict Comprehensions
نفس الفكرة لكن ننتج قاموساً بدلاً من قائمة:
Set Comprehensions
نفس الصيغة بأقواس معقوصة — تنتج مجموعة بلا تكرار:
متى لا تستخدم Comprehension؟
Comprehensions جميلة عندما تكون بسيطة، لكنها تصبح عكسية عندما تتعقد:
القاعدة العملية: إذا احتجت أن تقرأ الـ Comprehension مرتين لتفهمها، استبدلها بحلقة for عادية. الوضوح أهم من الإيجاز.
Generator Expressions
أخت قريبة من List Comprehension — تنتج القيم واحدة بواحدة بدلاً من بناء القائمة كلها في الذاكرة:
استخدم Generator Expressions مع sum()، max()، min()، any()، all() — أكثر كفاءة من بناء قائمة مؤقتة ثم تمريرها.
خلاصة
Comprehensions أداة تعبيرية قوية في Python — تجعل بناء القوائم والقواميس والمجموعات من البيانات الموجودة أوضح وأكثر مباشرةً. الصيغة الأساسية [تعبير for متغير in تسلسل if شرط] تقرأ مثل جملة إنجليزية بسيطة. تعلّم متى تستخدمها ومتى تتركها للحلقة العادية — هذا هو الفارق بين كود Python أنيق وكود يصعب صيانته. في الدرس القادم ستطبّق كل ما تعلمته في بناء سجل درجات حقيقي.