📝 ما هي قوائم Python (Lists) وكيف نستخدمها؟

اليوم سنتعلم عن أحد أهم هياكل البيانات في بايثون، ألا وهي القوائم (Lists). تخيل أنك تريد تخزين أسماء جميع أصدقائك، أو درجاتك في الفصل الدراسي، أو حتى قائمة مشترياتك. بدلاً من إنشاء متغير منفصل لكل عنصر، يمكنك استخدام قائمة واحدة تجمعهم جميعاً! 🗂️

القائمة هي حاوية (Container) مرتبة وقابلة للتغيير يمكنها تخزين مجموعة من العناصر. العناصر يمكن أن تكون من أي نوع بيانات (أرقام، نصوص، قوائم أخرى...)، ويمكن أن تكون مختلطة الأنواع أيضاً.


🔧 كيفية إنشاء قائمة (Creating a List)

لإنشاء قائمة في بايثون، نضع العناصر بين قوسين مربعين [] ونفصل بينها بفواصل.

# قائمة أسماء أصدقائي
my_friends = ["Ahmed", "Sarah", "Mohamed", "Fatima"]

# قائمة أرقام
even_numbers = [2, 4, 6, 8, 10]

# قائمة مختلطة الأنواع
mixed_list = ["Codex", 100, True, 3.14]

# قائمة فارغة (سنضيف لها عناصر لاحقاً)
empty_list = []
print(empty_list)  # ستطبع: []

🔍 الوصول إلى عناصر القائمة (List Indexing)

كل عنصر في القائمة له "عنوان" رقمي يسمى الفهرس (Index). الفهرس يبدأ من الصفر (0) للعنصر الأول، ثم 1 للثاني، وهكذا. يمكننا استخدام الفهرس داخل الأقواس المربعة [] للوصول للعنصر.

colors = ["Red", "Blue", "Green", "Yellow"]

# الوصول للعنصر الأول (فهرس 0)
first_color = colors[0]
print(first_color)  # المخرجات: Red

# الوصول للعنصر الثالث (فهرس 2)
third_color = colors[2]
print(third_color)  # المخرجات: Green

الفهرس السلبي (Negative Indexing)

تتيح لنا بايثون استخدام فهارس سلبية للعد من نهاية القائمة. الفهرس -1 يشير للعنصر الأخير، و-2 للعنصر قبل الأخير، وهكذا.

colors = ["Red", "Blue", "Green", "Yellow"]

last_color = colors[-1]
print(last_color)  # المخرجات: Yellow

second_last = colors[-2]
print(second_last) # المخرجات: Green

✏️ تعديل عناصر القائمة (Modifying a List)

إحدى المميزات الرائعة للقوائم هي أنها قابلة للتغيير (Mutable)، مما يعني أنه يمكننا تغيير قيمة عنصر بعد إنشاء القائمة.

shopping_list = ["Apple", "Milk", "Bread"]
print("قبل التعديل:", shopping_list)  # ['Apple', 'Milk', 'Bread']

# تغيير العنصر الثاني (فهرس 1) من 'Milk' إلى 'Juice'
shopping_list[1] = "Juice"
print("بعد التعديل:", shopping_list)  # ['Apple', 'Juice', 'Bread']

➕ إضافة عناصر جديدة للقائمة (Adding Items)

يمكننا إضافة عناصر جديدة نهاية القائمة باستخدام الدالة append().

my_courses = ["Math", "Science"]
print("القائمة الأصلية:", my_courses)  # ['Math', 'Science']

# إضافة عنصر جديد في النهاية
my_courses.append("History")
print("بعد الإضافة:", my_courses)  # ['Math', 'Science', 'History']

❌ حذف عناصر من القائمة (Removing Items)

لحذف عنصر معين من القائمة نستخدم الدالة remove() ونمرر لها قيمة العنصر المراد حذفه.

fruits = ["Banana", "Apple", "Orange", "Apple"]  # لاحظ وجود 'Apple' مرتين
print("قبل الحذف:", fruits)  # ['Banana', 'Apple', 'Orange', 'Apple']

# حذف أول ظهور للقيمة 'Apple'
fruits.remove("Apple")
print("بعد الحذف:", fruits)  # ['Banana', 'Orange', 'Apple'] (تم حذف أول 'Apple' فقط)

📏 معرفة طول القائمة (List Length)

لمعرفة عدد العناصر الموجودة داخل قائمة، نستخدم الدالة العالمية len().

grades = [95, 87, 92, 78]
list_length = len(grades)
print("عدد العناصر في القائمة هو:", list_length)  # المخرجات: 4

🔁 التكرار على عناصر القائمة (Looping Through a List)

غالباً نريد القيام بعمل ما على كل عنصر من عناصر القائمة. يمكننا فعل ذلك بسهولة باستخدام حلقة for.

animals = ["Cat", "Dog", "Rabbit"]

print("قائمة الحيوانات:")
for animal in animals:  # لكل عنصر (animal) في قائمة (animals)
    print("-", animal)  # اطبع هذا العنصر

# المخرجات:
# قائمة الحيوانات:
# - Cat
# - Dog
# - Rabbit

🎯 ملخص سريع

  • القائمة (List) هي حاوية مرتبة وقابلة للتغيير لتخزين مجموعة من العناصر.
  • ننشئها باستخدام الأقواس المربعة: my_list = [item1, item2].
  • نصل للعناصر باستخدام الفهرس الذي يبدأ من الصفر: my_list[0].
  • نعدل عنصراً بإعادة تعيين قيمته: my_list[1] = "New Value".
  • نضيف عنصراً في النهاية بـ my_list.append("New Item").
  • نحذف عنصراً محدداً بـ my_list.remove("Item Value").
  • نعرف طولها بـ len(my_list).
  • نكرر على عناصرها باستخدام for item in my_list:.

🧭 ماذا سنتعلم في الدرس القادم؟

الآن وقد أصبحت تعرف كيفية تخزين مجموعة من البيانات في قائمة واحدة، السؤال التالي هو: كيف يمكننا التعامل مع أجزاء من هذه القائمة؟ في الدرس القادم، سنتعلم تقنية قوية تسمى "تقطيع القوائم (List Slicing)" والتي تسمح لنا بأخذ شريحة أو جزء محدد من القائمة بكل سهولة، مثل الحصول على أول ثلاثة عناصر فقط، أو العناصر من منتصف القائمة! استعد لتصبح سيد التعامل مع البيانات داخل قوائمك. 🎯