عندك قائمة أرقام وتبغى مربع كل واحد. بالطريقة الطويلة تكتب حلقة كاملة، تنشئ قائمة جديدة، تضيف... خمس أسطر شغل. بايثون تقول: خذها بسطر واحد!
السحر اسمه فهم القوائم (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)، وطلع أعلى درجة وأقرب درس تحت المتوسط. سطر لكل وحدة!