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

القوائم في Python (Lists)

الدرس 9 من 25 · Python

تخيّل أنك تريد حفظ أسماء كل أصدقائك في برنامج. هل ستنشئ متغيراً لكل صديق؟ بالطبع لا! في هذا الدرس ستتعلم القوائم (Lists): أهم طريقة في Python لحفظ مجموعة من القيم في متغير واحد، والإضافة إليها والحذف منها وترتيبها.

القائمة تُكتب بين قوسين مربعين [ ]، والعناصر بينها فواصل:

fruits = ["تفاح", "موز", "برتقال"]
print(fruits)
الناتج
['تفاح', 'موز', 'برتقال']

القائمة مثل قائمة المشتريات التي تكتبها قبل الذهاب للسوق: عناصر مرتبة، يمكنك أن تضيف إليها وتشطب منها في أي وقت.

ويمكن أن تحتوي القائمة على أنواع مختلفة معاً:

mixed = ["علي", 15, True]
print(mixed)
الناتج
['علي', 15, True]

تماماً مثل النصوص، العناصر مرقّمة من صفر، والأرقام السالبة تعدّ من النهاية:

fruits = ["تفاح", "موز", "برتقال"]
print(fruits[0], fruits[-1])
print(len(fruits))
الناتج
تفاح برتقال
3

والتقطيع يعمل أيضاً: nums[1:3] تأخذ العنصرين في الفهرسين 1 و 2.

على عكس النصوص، القوائم قابلة للتعديل. يمكنك تغيير أي عنصر برقمه:

fruits[1] = "مانجو"
print(fruits)
الناتج
['تفاح', 'مانجو', 'برتقال']
fruits.append("عنب") # أضف في النهاية
print(fruits)
fruits.insert(0, "كيوي") # أضف في مكان محدد
print(fruits)
الناتج
['تفاح', 'مانجو', 'برتقال', 'عنب']
['كيوي', 'تفاح', 'مانجو', 'برتقال', 'عنب']
  • append تضيف عنصراً في نهاية القائمة. وهي الأكثر استخداماً.
  • insert(مكان, عنصر) تضيف العنصر في المكان الذي تحدده، وتزيح الباقي.
fruits.remove("برتقال") # احذف بالقيمة
print(fruits)
last = fruits.pop() # احذف الأخير وأرجعه
print(last, fruits)
الناتج
['كيوي', 'تفاح', 'مانجو', 'عنب']
عنب ['كيوي', 'تفاح', 'مانجو']
  • remove(قيمة) تحذف أول عنصر يطابق القيمة.
  • pop() تحذف آخر عنصر وتُرجعه لك، فتستطيع حفظه في متغير. و pop(0) تحذف الأول.

الكلمة in تسأل: هل هذا العنصر موجود؟

print("تفاح" in fruits)
الناتج
True
nums = [5, 2, 9, 1]
nums.sort()
print(nums)
print(sorted([3, 1, 2], reverse=True))
print(sum(nums), min(nums), max(nums))
الناتج
[1, 2, 5, 9]
[3, 2, 1]
17 1 9
  • sort() ترتّب القائمة نفسها تصاعدياً.
  • sorted() تُرجع قائمة جديدة مرتبة وتترك الأصلية كما هي. و reverse=True تعكس الترتيب.
  • sum و min و max تعطيك المجموع وأصغر وأكبر قيمة.

في البرامج الحقيقية، كثيراً ما تبدأ بقائمة فارغة ثم تملؤها أثناء عمل البرنامج، مثل سلة مشتريات تبدأ فارغة ويضيف إليها المستخدم:

cart = []
cart.append("قميص")
cart.append("حذاء")
print(cart, len(cart))
print(len([]) == 0)
الناتج
['قميص', 'حذاء'] 2
True

القائمة الفارغة [] طولها صفر، وهي من القيم الخاطئة (Falsy) التي تعرفت عليها في درس الشروط، فيمكنك أن تكتب if cart: لتسأل «هل في السلة شيء؟». وستتعلم في الدرس القادم كيف تمر على عناصر القائمة واحداً تلو الآخر بحلقة for، وعندها ستظهر قوة القوائم الحقيقية.

إذا طلبت فهرساً غير موجود، تتوقف Python:

fruits = ["كيوي", "تفاح", "مانجو"]
print(fruits[10])
الناتج
IndexError: list index out of range

القائمة فيها 3 عناصر فقط (الفهارس 0 و 1 و 2)، فالفهرس 10 «خارج النطاق».

اكتب برنامجاً لإدارة قائمة مهام:

  1. أنشئ قائمة فيها مهمتان: "مذاكرة" و "رياضة".
  2. أضف "قراءة" في النهاية، و "صلاة الفجر" في البداية.
  3. احذف "رياضة".
  4. اطبع عدد المهام والقائمة كاملة.

الناتج المتوقع:

الناتج
عدد المهام: 3
['صلاة الفجر', 'مذاكرة', 'قراءة']
  • البدء من الفهرس 1: أول عنصر items[0]، وآخر عنصر items[-1].
  • حذف عنصر غير موجود: remove("x") لعنصر غير موجود يسبب ValueError. افحص أولاً بـ in.
  • حفظ نتيجة sort: nums = nums.sort() تجعل nums تساوي None! لأن sort ترتّب القائمة نفسها ولا تُرجع شيئاً.

سؤال

إذا كانت nums = [4, 8, 15]، فما ناتج nums[-1]؟

سؤال

أي دالة تضيف عنصراً في نهاية القائمة؟

  • القائمة مجموعة مرتبة من القيم بين [ ]، وعناصرها مرقّمة من صفر.
  • القوائم قابلة للتعديل: items[i] = قيمة.
  • الإضافة بـ append و insert، والحذف بـ remove و pop.
  • in للبحث، و sort و sorted للترتيب، و sum و min و max للحسابات.
  • الفهرس غير الموجود يسبب IndexError.