Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

إضافة الشروط

جزء من قسم Logic & Flow في رحلة Python على Coddy — الدرس 52 من 78.

تصبح فهم القوائم (List comprehensions) أكثر قوة عندما تضيف المنطق الشرطي. يتيح لك هذا إنشاء قوائم جديدة بناءً على قوائم موجودة، مع تصفية وتحويل العناصر بناءً على شروط محددة.

إن صيغة إضافة شرط إلى (list comprehension) هي:

new_list = [expression for item in iterable if condition]

إليك شرح للصيغة:

  • new_list: القائمة الجديدة التي سيتم إنشاؤها.
  • expression: القيمة التي سيتم تضمينها في new_list. يمكن أن يكون هذا نسخة معدلة من item.
  • for item in iterable: حلقة تكرارية تمر عبر كل عنصر في iterable (على سبيل المثال، قائمة list، أو صف tuple، أو نطاق range).
  • item: العنصر الحالي الذي تتم معالجته في الحلقة.
  • if condition: مرشح يحدد ما إذا كان الـ item الحالي يجب تضمينه في new_list. يتم تقييم الـ expression فقط إذا كان الـ condition هو True.

إليك مثالاً:

numbers = [1, 2, 3, 4, 5, 6]
evens = [n for n in numbers if n % 2 == 0]
print(evens)
# المخرجات: [2, 4, 6]

في هذا المثال، ينشئ تعبير القائمة (list comprehension) قائمة جديدة تسمى evens من خلال أخذ كل عنصر n من قائمة numbers وتضمينه فقط إذا كان زوجياً (أي، n % 2 == 0).

challenge icon

التحدي

سهل

قم بإنشاء دالة باسم filter_and_square تأخذ قائمة من الأرقام numbers كمعامل. يجب أن تستخدم الدالة list comprehension لإنشاء قائمة جديدة تتضمن مربعات الأرقام الموجبة فقط من القائمة الأصلية. يجب أن تعيد الدالة القائمة الجديدة.

ورقة مرجعية

تسمح لك تضمينات القائمة (List comprehensions) ذات المنطق الشرطي بتصفية وتحويل العناصر بناءً على شروط محددة:

new_list = [expression for item in iterable if condition]
  • expression: القيمة التي سيتم تضمينها في القائمة الجديدة
  • for item in iterable: التكرار عبر كل عنصر
  • if condition: عامل تصفية يحدد ما إذا كان يجب تضمين العنصر

مثال - تصفية الأعداد الزوجية:

numbers = [1, 2, 3, 4, 5, 6]
evens = [n for n in numbers if n % 2 == 0]
print(evens)
# الناتج: [2, 4, 6]

جرّب بنفسك

def filter_and_square(numbers):
    # اكتب الكود هنا
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس Logic & Flow