تخطَّ إلى المحتوى

[x for x in y]

فهم القوائم — List Comprehension [x for x in y]

صياغة مختصرة لبناء قائمة جديدة من كائن قابل للتكرار بسطر واحد، بديل أنيق عن حلقة for مع append().

تتكوّن من تعبير يُطبَّق على كل عنصر، متبوعًا بجملة for، وشرط if اختياري. النتيجة قائمة جديدة كاملة تُبنى فورًا في الذاكرة.

نفس الفكرة تنطبق على القواميس بأقواس {} وزوج مفتاح:قيمة، وعلى المجموعات بأقواس {} بدون نقطتين — مع حذف تلقائي للتكرار في حالة المجموعات.

الصياغة

[تعبير for عنصر in متسلسلة if شرط]

📄 مثال

squares = [x ** 2 for x in range(10)]
evens = [x for x in range(20) if x % 2 == 0]

squares_dict = {x: x ** 2 for x in range(5)}
unique_chars = {ch for ch in "abracadabra"}

أهم المعاملات

المعاملالوظيفة
تعبيرالقيمة التي تُضاف للقائمة الناتجة عن كل عنصر
for عنصر in متسلسلةالمرور على كل عنصر بالكائن الأصلي، يمكن تكرارها لحلقات متداخلة
if شرطجزء اختياري لتصفية العناصر قبل تضمينها

💡 نصائح عملية

  • استخدمها بدل حلقة for مع append() عندما يكون المنطق بسيطًا وواضحًا بسطر واحد
  • لو احتجت كفاءة ذاكرة أعلى مع بيانات ضخمة، استخدم تعبير مولّد (generator expression) بأقواس عادية () بدل []

⚠️ أخطاء شائعة

  • نسيان الأقواس حول tuple داخل comprehension: [(x, x**2) for x in range(5)] صحيحة، بدونها SyntaxError
  • المبالغة في تداخل عدة for وif بسطر واحد لدرجة تفقد الوضوح — حلقة for عادية أوضح حينها

خصائص ذات صلة

🎓 تريد فهم الصورة الكاملة خطوة بخطوة؟ ابدأ من مسار PYTHON الكامل بالعربي.