الدرس 34 من 56 · مهارات إضافية لكل شيء

قوائم أذكى: سطر واحد يسوي عمل عشرة

عندك قائمة أرقام وتبغى مربع كل واحد. بالطريقة الطويلة تكتب حلقة كاملة، تنشئ قائمة جديدة، تضيف... خمس أسطر شغل. بايثون تقول: خذها بسطر واحد!

السحر اسمه فهم القوائم (List Comprehension) — لكن أنا أناديها "آلة التغليف": تدخل كل قطعة من جهة، تطلع من جهة ثانية معالجة:

nums = [1, 2, 3, 4, 5, 6]

squares = [n * n for n in nums]
print(squares)   # [1, 4, 9, 16, 25, 36]

doubles = [n * 2 for n in nums]
print(doubles)   # [2, 4, 6, 8, 10, 12]

اقرأ السطر بالعربي من اليمين: "لكل n في nums، حط n × n داخل قائمة جديدة". نفس الحلقة، بس ملفوفة بسطر أنيق.

وفيها حتى فلتر — نختار بس اللي نبيه بكلمة if:

nums = [1, 2, 3, 4, 5, 6]

evens = [n for n in nums if n % 2 == 0]
print(evens)   # [2, 4, 6]

big = [n for n in nums if n > 3]
print(big)     # [4, 5, 6]

الشرط if بالآخر يعني: "خذه بس إذا عدّى الاختبار". مثل حارس الباب: اللي مستوفي الشروط يدخل.

والمكتبة تعطيك أدوات جاهزة على القوائم، بدون أي حلقة:

scores = [14, 25, 8, 30, 19]

print(sum(scores))     # المجموع: 96
print(max(scores))     # الأكبر: 30
print(min(scores))     # الأصغر: 8
print(sorted(scores)) # مرتبة: [8, 14, 19, 25, 30]

sum تجمع، max وmin يجيبون الأطراف، sorted ترتب (وتترك الأصل زي ما هو).

جرب بنفسك: عندك درجات اختباراتك بقائمة — احسب المعدل (sum ÷ عدد العناصر len)، وطلع أعلى درجة وأقرب درس تحت المتوسط. سطر لكل وحدة!

اختبار سريع للدرس

جاوب على كل الأسئلة — لازم كلها صح. إذا غلطت بيطلع صندوق ذهبي يفهّمك وش الخطأ. مو عيب تغلط، كل مبرمج بالعالم غلط وأخذ منها درس.

1. وش نتيجة [n * 2 for n in [1, 2, 3]]؟
2. وش تعطيك sum([2, 4, 6])؟
3. وش يسوي if بآخر الفهم مثل [n for n in nums if n > 0]؟
الدرس 33 الدرس 35 — دوال بمستوى برو: قيم افتراضية وأسرار إضافية
FeLiXFeLiX AI — مساعد المنصتين