الدرس السابع: القوائم في بايثون (Python Lists)
القوائم (Lists) في بايثون: شرح شامل مع أمثلة وتمارين
في هذا الدرس ستتعلم القوائم (Lists) في بايثون: كيف ننشئ List، وكيف نضيف/نحذف عناصر، وكيف نستخدم الفهارس (Index)، والتقطيع (Slicing)، والمرور على العناصر بالحلقات، مع تمارين وحلول.
1) ما هي القوائم (Lists) في بايثون؟
القائمة (List) هي نوع من أنواع البيانات في بايثون يسمح لك بتخزين عدة قيم داخل متغير واحد. يمكن أن تحتوي القائمة على أرقام، نصوص، أو حتى أنواع مختلفة معًا.
متى نحتاج List؟ عندما يكون لدينا مجموعة بيانات: أسماء تلاميذ، درجات، منتجات، مهام، إلخ.
مثال بسيط
students = ["أحمد", "سارة", "ياسين"] print(students)
2) إنشاء قائمة وكيفية الطباعة
نكتب القائمة بين قوسين مربعين [ ] ونفصل العناصر بفواصل.
numbers = [10, 20, 30, 40] mixed = ["Ali", 15, True, 3.5] print(numbers) print(mixed)
ملاحظة: القوائم في بايثون قابلة للتغيير (Mutable)، أي يمكنك تعديلها بعد إنشائها.
3) الفهارس (Index) والتعديل على العناصر
كل عنصر في القائمة لديه رقم يسمى الفهرس (Index). يبدأ العد من 0. يمكن الوصول للعنصر هكذا: list_name[index]
| المثال | الشرح |
|---|---|
| students[0] | أول عنصر |
| students[1] | ثاني عنصر |
| students[-1] | آخر عنصر (من النهاية) |
مثال: قراءة عنصر وتعديله
students = ["أحمد", "سارة", "ياسين"] print(students[0]) # أحمد students[1] = "ريم" # تعديل print(students)
4) التقطيع (Slicing)
التقطيع يساعدك على أخذ جزء من القائمة: list[start:end] حيث end غير مشمول.
nums = [1, 2, 3, 4, 5, 6] print(nums[0:3]) # [1, 2, 3] print(nums[2:]) # من index 2 إلى النهاية print(nums[:4]) # من البداية إلى 4 (غير شامل) print(nums[-3:]) # آخر 3 عناصر
فكرة ذهبية: التقطيع مفيد جدًا في معالجة البيانات بسرعة.
5) أهم الدوال (Methods) للقوائم
هذه أهم الأدوات التي ستستعملها يوميًا مع القوائم:
| الدالة | ماذا تفعل؟ | مثال |
|---|---|---|
| append() | تضيف عنصرًا في النهاية | lst.append(5) |
| insert() | تضيف عنصرًا في مكان محدد | lst.insert(1,"A") |
| remove() | تحذف عنصرًا بالقيمة | lst.remove("A") |
| pop() | تحذف عنصرًا بالفهرس (أو الأخير) | lst.pop() |
| len() | تعطي طول القائمة | len(lst) |
| sort() | ترتب القائمة | lst.sort() |
مثال عملي سريع
tasks = ["قراءة", "تمارين", "مراجعة"]
tasks.append("مشروع صغير")
tasks.insert(1, "فيديو قصير")
tasks.remove("قراءة")
last = tasks.pop()
print(tasks)
print("آخر عنصر تم حذفه:", last)
print("عدد المهام:", len(tasks))تنبيه: دالة remove() تحذف أول تطابق فقط، وإذا لم تجد العنصر ستظهر خطأ.
6) المرور على عناصر القائمة بالحلقات
نستخدم for غالبًا للمرور على العناصر بسهولة.
students = ["أحمد", "سارة", "ياسين"]
for name in students:
print("مرحبا", name)باستخدام range + index
nums = [10, 20, 30]
for i in range(len(nums)):
print(i, nums[i])نصيحة: غالبًا الأفضل استخدام for item in list إلا إذا كنت تحتاج رقم الفهرس.
7) القوائم المتداخلة (Nested Lists)
يمكن أن تحتوي القائمة على قوائم أخرى، وهذا مفيد لتمثيل الجداول.
grades = [
["أحمد", 15],
["سارة", 18],
["ياسين", 12]
]
print(grades[0]) # ["أحمد", 15]
print(grades[0][0]) # أحمد
print(grades[0][1]) # 158) مشروع صغير: إدارة قائمة مهام (To-Do List)
هذا مشروع بسيط يجلب زيارات لأنه قريب من تطبيقات الحياة اليومية. سنبني قائمة مهام ونضيف/نحذف/نعرض المهام.
tasks = []
while True:
print("\n1) إضافة مهمة")
print("2) عرض المهام")
print("3) حذف آخر مهمة")
print("4) خروج")
choice = input("اختر: ")
if choice == "1":
t = input("اكتب المهمة: ")
tasks.append(t)
print("تمت الإضافة ✅")
elif choice == "2":
if len(tasks) == 0:
print("لا توجد مهام بعد.")
else:
print("مهامك:")
for i in range(len(tasks)):
print(f"{i+1}- {tasks[i]}")
elif choice == "3":
if len(tasks) == 0:
print("لا يوجد شيء للحذف.")
else:
removed = tasks.pop()
print("تم حذف:", removed)
elif choice == "4":
print("إلى اللقاء 👋")
break
else:
print("اختيار غير صحيح")تطوير للمستوى المتوسط: اجعل الحذف برقم (Index) بدل حذف آخر مهمة فقط، ثم أضف حفظ المهام في ملف.
9) تمارين (مع حلول)
⭐ تمرين 1: أنشئ قائمة تحتوي على 5 أرقام واطبع مجموعها.
nums = [1, 2, 3, 4, 5] print(sum(nums))
⭐ تمرين 2: اطبع آخر عنصر في القائمة بطريقتين مختلفتين.
lst = ["A", "B", "C"] print(lst[2]) print(lst[-1])
⭐ تمرين 3 (متوسط): اطبع العناصر الزوجية فقط من قائمة أرقام.
nums = [1, 2, 3, 4, 5, 6]
for n in nums:
if n % 2 == 0:
print(n)⭐ تمرين 4 (متوسط): احذف عنصرًا يكتبه المستخدم من قائمة أسماء (إذا كان موجودًا).
names = ["أحمد", "سارة", "ياسين"]
target = input("اكتب الاسم للحذف: ")
if target in names:
names.remove(target)
print("تم الحذف ✅")
else:
print("الاسم غير موجود")
print(names)10) أسئلة شائعة (FAQ)
لماذا يبدأ Index من 0؟
هذا نظام شائع في أغلب لغات البرمجة، ويسهّل التعامل مع الذاكرة والحلقات.
ما الفرق بين remove و pop؟
remove(value) تحذف عنصرًا بالقيمة، بينما pop(index) تحذف عنصرًا بالفهرس (أو الأخير إذا لم تحدد فهرسًا).
هل يمكن للقائمة أن تحتوي على أنواع مختلفة؟
نعم، List يمكن أن تحتوي على نصوص وأرقام وقيم منطقية في نفس الوقت.
تعليقات
إرسال تعليق
نرحب بتعليقاتكم البناءة، ونسعى لردود تفاعلية ومفيدة للجميع.