خاصية "List Comprehension" في لغة Python هي طريقة مختصرة وأنيقة لإنشاء قوائم جديدة بناءً على قوائم موجودة أو أي متسلسلة أخرى (مثل النطاقات أو السلاسل النصية). تُمكنك هذه الخاصية من كتابة حلقة تكرارية بسيطة في سطر واحد، مما يجعل الكود أكثر قابلية للقراءة والاختصار.

شكلها العام:

Python
[التعبير for العنصر in المتسلسلة if الشرط]
  • التعبير: هو العملية التي تُجرى على كل عنصر في المتسلسلة لإنشاء العنصر الجديد في القائمة الجديدة.
  • العنصر: هو متغير يُمثل كل عنصر في المتسلسلة الأصلية.
  • المتسلسلة: هي القائمة أو أي كائن قابل للتكرار الذي نمر عليه.
  • الشرط (اختياري): يُستخدم لتصفية العناصر، حيث يُضاف العنصر فقط إلى القائمة الجديدة إذا تحقق الشرط.

أمثلة:

  1. إنشاء قائمة بمربعات الأرقام من 0 إلى 9:
Python
squares = [x**2 for x in range(10)]
print(squares) # Output: [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

بدون List Comprehension، كنا سنكتب:

Python
squares = []
for x in range(10):
squares.append(x**2)
print(squares) # Output: [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

كما ترى، List Comprehension أكثر اختصارًا ووضوحًا.

  1. إنشاء قائمة بالأرقام الزوجية من 0 إلى 19:
Python
even_numbers = [x for x in range(20) if x % 2 == 0]
print(even_numbers) # Output: [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
  1. تحويل قائمة من السلاسل النصية إلى أحرف كبيرة:
Python
words = ["hello", "world", "python"]
upper_words = [word.upper() for word in words]
print(upper_words) # Output: ['HELLO', 'WORLD', 'PYTHON']
  1. استخدام حلقات متداخلة (Nested Loops):

يمكن استخدام List Comprehension مع حلقات متداخلة، ولكن يجب استخدامها بحذر لتجنب تعقيد الكود بشكل كبير. مثال:

Python
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
flattened = [num for row in matrix for num in row]
print(flattened) # Output: [1, 2, 3, 4, 5, 6, 7, 8, 9]

فوائد استخدام List Comprehension:

  • الاختصار: كتابة الكود بشكل أكثر إيجازًا.
  • القراءة: جعل الكود أسهل للقراءة والفهم.
  • الأداء: في بعض الحالات، قد يكون أداء List Comprehension أفضل من الحلقات التكرارية التقليدية.

متى لا تستخدم List Comprehension:

  • عندما يصبح التعبير معقدًا جدًا ويصعب قراءته. في هذه الحالة، من الأفضل استخدام حلقات تكرارية تقليدية.
  • عند الحاجة إلى منطق معقد داخل الحلقة لا يمكن التعبير عنه بسهولة في سطر واحد.

باختصار، List Comprehension أداة قوية في Python لإنشاء القوائم بكفاءة ووضوح.