القوائم في بايثون: دليل شامل للمبتدئين لفهم List واستخدامها باحتراف

دقائق القراءة: 6

مقدمة إلى القوائم في بايثون

عند التخطيط لشراء الاحتياجات اليومية، فإن أول خطوة منطقية هي إعداد قائمة بالعناصر المطلوبة. الفكرة نفسها موجودة في لغة Python عبر بنية بيانات مدمجة تُسمى List. تساعدك القوائم على تخزين عدة قيم داخل متغيّر واحد، مع إمكانية الوصول إلى العناصر وتعديلها بسهولة.

في هذا الدليل العملي، ستتعرّف إلى كيفية عمل القوائم في Python، وطريقة إنشاءها، والتعامل مع الفهرسة، والتقطيع، والتكرار، إلى جانب أبرز الدوال والطرائق المستخدمة معها في البرمجة اليومية.

شرح القوائم في بايثون مع أمثلة عملية للمبتدئين

كيف تعمل القوائم في Python؟

تُكتب عناصر القائمة داخل أقواس مربعة [ ]، وتفصل بينها فواصل. ويمكن أن تحتوي القائمة على نصوص أو أرقام أو حتى قوائم أخرى.

في المثال التالي، ننشئ قائمة تسوّق تحتوي على ستة عناصر:

shopping_list = ['apples', 'pens', 'oatmeal cookies', 'notepad', 'brushes', 'paint']

هذه البنية مفيدة جداً عندما تريد جمع عناصر مرتبطة معاً في تسلسل واحد يسهل التعامل معه برمجياً.

قابلية التعديل في القوائم

من أهم خصائص القوائم في Python أنها قابلة للتعديل، أي يمكنك تغيير عناصرها بعد إنشائها. وهذه الميزة تجعلها مناسبة للحالات التي تتغير فيها البيانات باستمرار.

على سبيل المثال، يمكن استبدال العنصر 'oatmeal cookies' بالعنصر 'candy' كما يلي:

shopping_list[2] = 'candy'
print(shopping_list)
# Output >> ['apples', 'pens', 'candy', 'notepad', 'brushes', 'paint']

هذا يعني أنك لا تحتاج إلى إنشاء قائمة جديدة كلما أردت تحديث عنصر واحد فقط.

الفهرسة في القوائم: كيف تصل إلى العناصر؟

الفهرسة الصفرية في Python

تعتمد Python على ما يُعرف باسم الفهرسة الصفرية. أي أن أول عنصر في القائمة يكون عند الفهرس 0، والثاني عند 1، والثالث عند 2، وهكذا.

لذلك، رغم أن 'oatmeal cookies' هو العنصر الثالث من حيث الترتيب البشري، فإنه يوجد عند الفهرس 2.

إذا كانت القائمة تحتوي على n عناصر، فإن آخر عنصر سيكون عند الفهرس n-1.

ماذا يحدث عند استخدام فهرس غير صالح؟

إذا حاولت الوصول إلى عنصر غير موجود داخل حدود القائمة، فستحصل على الخطأ IndexError.

print(shopping_list[6])
# Output >>
# --------------------------------------------------------------------------
# IndexError Traceback (most recent call last)
# <ipython-input-21-a9f3b9517136> in <module>()
# ----> 1 shopping_list[6]
# IndexError: list index out of range

بما أن القائمة تحتوي على 6 عناصر فقط، فإن الفهارس المتاحة تكون من 0 إلى 5.

الفهرسة السالبة

توفر Python أيضاً الفهرسة السالبة، وهي طريقة مريحة للوصول إلى العناصر من نهاية القائمة. فالآخر يكون عند -1، والذي قبله عند -2.

print(shopping_list[-1])
# Output >> paint

هذه الطريقة مفيدة جداً عندما تحتاج إلى آخر عنصر دون معرفة طول القائمة مسبقاً.

أنواع العناصر داخل القائمة والقوائم المتداخلة

يمكن للقائمة أن تحتوي على عناصر من أنواع مختلفة، مثل النصوص والأرقام والقيم المنطقية. كما يمكن أيضاً أن تحتوي على قائمة داخل قائمة أخرى، ويُعرف ذلك باسم التداخل أو nested lists.

my_nested_list = [['apple', 'banana'], ['paint', 'brushes']]

هذا النمط شائع عند تمثيل البيانات ذات البنية الهرمية، مثل الصفوف والأعمدة أو التصنيفات الفرعية.

كيفية المرور على عناصر القائمة

عند الرغبة في قراءة جميع العناصر داخل قائمة، يمكنك استخدام حلقة for مع العامل in. وتُعد هذه الطريقة الأبسط لتصفح العناصر واحداً تلو الآخر.

for item in shopping_list:
    print(item)

# Output
# apples
# pens
# candy
# notepad
# brushes
# paint

إذا كنت تحتاج إلى تنفيذ عمليات تعتمد على الفهرس نفسه، فمن الأفضل استخدام range() للحصول على مجموعة من الفهارس.

تقطيع القوائم في Python

التقطيع أو slicing يتيح لك استخراج جزء محدد من القائمة دون الحاجة إلى المرور على كل العناصر يدوياً.

الصيغة العامة تكون كالتالي:

list_name[start_index:end_index]

المهم هنا أن الحد الأخير غير مشمول في النتيجة، لذلك عند الرغبة في الوصول حتى عنصر معين يجب مراعاة ذلك أثناء كتابة الفهرس النهائي.

أمثلة على التقطيع

print(shopping_list[2:])
# Output >> ['candy', 'notepad', 'brushes', 'paint']

print(shopping_list[:2])
# Output >> ['apples', 'pens']

print(shopping_list[:])
# Output >> ['apples', 'pens', 'candy', 'notepad', 'brushes', 'paint']
  • عند حذف start_index يبدأ التقطيع من أول عنصر.
  • عند حذف end_index يستمر حتى آخر عنصر.
  • عند حذف الاثنين معاً، تحصل على نسخة من القائمة كاملة.

دوال شائعة للتعامل مع القوائم

يمكن تطبيق بعض الدوال المدمجة في Python مباشرة على القوائم، ومنها:

  • len() لمعرفة عدد العناصر.
  • min() لإرجاع أصغر عنصر.
  • max() لإرجاع أكبر عنصر.

في حال كانت القائمة تحتوي على نصوص فقط، فإن min() وmax() تعتمدان على الترتيب المعجمي.

print(len(shopping_list))
# >> 6

print(max(shopping_list))
# >> pens

print(min(shopping_list))
# >> apples

دمج القوائم في Python

يمكنك إنشاء قائمة جديدة عبر دمج قائمتين باستخدام العامل +. وهذه العملية لا تعدّل القائمة الأصلية، بل تُنتج قائمة جديدة.

list_2 = shopping_list + ['noodles', 'almonds']
print(list_2)
# >> ['apples', 'pens', 'candy', 'notepad', 'brushes', 'paint', 'noodles', 'almonds']

أهم طرائق القوائم في Python

توفر القوائم مجموعة من الطرائق المفيدة التي تختصر عليك كثيراً من العمل. ومن أبرز الاستخدامات اليومية:

  • إضافة عنصر أو أكثر.
  • حذف عنصر أو مجموعة عناصر.
  • إعادة ترتيب القائمة أو فرزها.
  • حساب عدد مرات تكرار قيمة محددة.

إضافة عناصر باستخدام append()

تستخدم الطريقة append() لإضافة عنصر واحد في نهاية القائمة.

shopping_list.append('grapes')
print(shopping_list)
# >> ['apples', 'pens', 'candy', 'notepad', 'brushes', 'paint', 'grapes']

إضافة عدة عناصر باستخدام extend()

إذا أردت إضافة مجموعة عناصر دفعة واحدة من قائمة أخرى أو من أي كائن قابل للتكرار iterable، فاستخدم extend().

shopping_list.extend(['protein bars', 'cheese'])
print(shopping_list)
# >> ['apples', 'pens', 'candy', 'notepad', 'brushes', 'paint', 'grapes', 'protein bars', 'cheese']

هناك فرق مهم بين append() وextend() والعامل +:

  • append() يضيف عنصراً واحداً إلى القائمة نفسها.
  • extend() يضيف عدة عناصر إلى القائمة نفسها.
  • العامل + ينشئ قائمة جديدة بدلاً من تعديل القائمة الحالية.

حذف العناصر باستخدام pop()

تعيد الطريقة pop() آخر عنصر من القائمة ثم تحذفه منها.

last_element = shopping_list.pop()
print(shopping_list)
print(last_element)
# Output >>
# ['apples', 'pens', 'candy', 'notepad', 'brushes', 'paint', 'grapes', 'protein bars']
# cheese

كما يمكنك تمرير فهرس محدد إلى pop() لحذف عنصر في موضع معيّن:

not_needed = shopping_list.pop(2)
print(not_needed)
# Output >> candy

الحذف باستخدام del

إذا لم تكن بحاجة إلى القيمة المحذوفة بعد إزالتها، فيمكن استخدام del.

del shopping_list[1]
print(shopping_list)
# Output >> ['apples', 'notepad', 'brushes', 'paint', 'grapes', 'protein bars']

ويمكن أيضاً استخدام del مع التقطيع لحذف عدة عناصر دفعة واحدة.

الحذف بالقيمة باستخدام remove()

عندما تعرف اسم العنصر لكنك لا تعرف موقعه، فإن remove() تكون الحل الأنسب.

على سبيل المثال، يمكن تنفيذ:

shopping_list.remove('pens')

ومن المهم معرفة أن محاولة حذف عنصر غير موجود ستؤدي إلى ظهور الخطأ ValueError.

تفريغ القائمة باستخدام clear()

إذا أردت حذف جميع العناصر من القائمة مع الإبقاء على المتغيّر نفسه، فاستخدم:

list_name.clear()

فرز القوائم في Python

تسمح الطريقة sort() بترتيب عناصر القائمة مباشرة. وفي حالة النصوص، يتم الفرز أبجدياً، أما الأرقام فتُرتب تصاعدياً بشكل افتراضي.

إذا أردت الترتيب التنازلي، يمكنك استخدام الوسيط reverse=True.

shopping_list.sort()
print(shopping_list)
# Output >> ['apples', 'brushes', 'grapes', 'notepad', 'paint', 'protein bars']

يجدر التنبيه إلى أن sort() تعدّل القائمة الأصلية. أما إذا كنت تريد قائمة مرتبة جديدة مع الحفاظ على الأصل، فاستخدم sorted().

حساب تكرار العناصر باستخدام count()

تُستخدم الطريقة count() لمعرفة عدد مرات ظهور عنصر معين داخل القائمة.

الصيغة العامة:

list_name.count(element)

وهذه الطريقة مفيدة عند تحليل البيانات أو التحقق من تكرار قيمة ما داخل مجموعة عناصر.

ملخص بصري للمفاهيم الأساسية

إذا أردت مراجعة سريعة لما تعلّمته حول القوائم في Python، فالصورة التالية تساعد على تثبيت المفاهيم الأساسية بصرياً.

ملخص بصري لأهم مفاهيم القوائم في بايثون

كما أن الصورة التالية تمثل ورقة مرجعية مفيدة لأبرز طرائق القوائم التي ستستخدمها كثيراً أثناء البرمجة.

ورقة مرجعية لطرائق القوائم في بايثون للمبتدئين

أفضل ممارسات عند استخدام القوائم

  • استخدم القوائم عندما تحتاج إلى بنية بيانات مرتبة وقابلة للتعديل.
  • تأكد من حدود الفهارس قبل الوصول إلى العناصر لتجنب IndexError.
  • اختر بين append() وextend() و+ حسب ما إذا كنت تريد تعديل القائمة أو إنشاء قائمة جديدة.
  • استخدم sorted() إذا كنت تريد نسخة مرتبة دون المساس بالبيانات الأصلية.
  • عند التعامل مع بيانات معقدة، فكّر في استخدام القوائم المتداخلة بحذر حتى لا يصعب تتبع البنية.

الخلاصة التقنية

تُعد القوائم في Python من أكثر هياكل البيانات استخداماً بسبب مرونتها وسهولة التعامل معها. فهي مناسبة لتخزين البيانات المرتبة، وإجراء عمليات الإضافة والحذف والتعديل والفرز بسرعة ووضوح. ومن الناحية العملية، فإن إتقان القوائم يمثّل خطوة أساسية لأي مبرمج مبتدئ، لأنها تُستخدم في عدد هائل من التطبيقات والخوارزميات اليومية. وكلما فهمت الفهرسة والتقطيع وطرائق القوائم بعمق، أصبح تعاملك مع البيانات في Python أكثر كفاءة واحترافية.

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *