شرح كامل للقوائم في لغة البرمجة بايثون

شرح كامل للقوائم في لغة البرمجة بايثون

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

1- كيفية إنشاء قائمة

القوائم هي تسلسلات قابلة للتغيير مما يعني أنه يمكن تغييرها بعد الإنشاء. تعد القوائم من أكثر أنواع البيانات استخداما في بايثون وتستخدم عموما لتخزين مجموعة من العناصر من نفس النوع. تبدو القائمة على النحو التالي: ["ahmed", "ali", "mahmoud", "adel"]. تبدأ القائمة بقوس مربع للفتح وتنتهي بقوس مربع للإغلاق []. تسمى القيم الموجودة داخل القائمة بالعناصر. وتكون العناصر مفصولة بفواصل.

friends = ["ahmed", "ali", "mahmoud", "adel"]

قائمة فارغة:

friends = []

على الرغم من أن قوائم بايثون متجانسة بشكل عام ولكن يمكنك الحصول على عناصر ذات أنواع بيانات مختلفة:

friends = [1, "adel", 1.5]

يمكنك إضافة قائمة داخل قائمة:

friends = [1, "adel", [5, "ahmed"]]

يمكن أن يكون للعناصر المتعددة نفس القيمة:

friends = [1, "adel",, 5, "ahmed", 1, "adel", 2]

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

يمكن الوصول إلى عنصر القائمة بواسطة الفهرس الخاص به. الفهارس هي أعداد صحيحة وتبدأ من 0 إلى عدد عناصر القائمة مطروحا منها 1:

mylist = ["a", "b", "c", "d"]
           0    1    2    3

لتصل إلي عنصر معين يكتب الفهرس محاطا بأقواس مربعة

mylist[index]

على سبيل المثال ، للوصول إلى العنصر الثاني من القائمة ، ستستخدم:

friends = ["ahmed", "ali", "mahmoud", "adel"]
friends[1]
output: "ali"

إذا طلبت الوصول إلي فهرس غير موجود فسيتم إظهار الخطأ IndexError:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: list index out of range

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

friends = [1, "adel", [5, "ahmed"]]
friends[2][0]
output: 5

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

mylist = ["a", "b", "c", "d"]
          -4   -3   -2   -1

على سبيل المثال للوصول إلى العنصر الثاني من النهاية يمكنك استخدام:

friends = ["ahmed", "ali", "mahmoud", "adel"]
friends[-2]
output: mahmoud

3- كيفية تقسيم القائمة

في لغة البرمجة بايثون يمكنك تقسيم القائمة باستخدام النموذج التالي:

mylist[start:stop:step]
يحدد الأمر الأول الفهرس الذي يبدأ عنده التقسيم. عند استخدام فهرس سالب فإنه يشير إلى البدء من نهاية القائمة. إذا تم حذف هذا الأمر يبدأ التقسيم من الفهرس 0.
يحدد الأمر الثاني الفهرس الذي سيتم قبله إنهاء التقسيم والنتيجة لا تتضمن عنصر الإيقاف. عند استخدام فهرس سالب فإنه يشير إلى البدء من نهاية القائمة. إذا تم حذف هذا الأمر أو كانت أكبر من طول القائمة ينتقل التقسيم إلى نهاية القائمة.
الأمر الثالث هو اختياري ويحدد خطوة التقطيع. عندما لا يتم استخدام أمر الخطوة يتم تعيينها افتراضيا على 1. عند استخدام قيمة سالبة ، تأخذ الشريحة العناصر بترتيب عكسي.

نتيجة تقسيم القائمة إلى شرائح سيكون قائمة جديدة تحتوي على العناصر المستخرجة ، ولا يتم تعديل القائمة الأصلية.

لنسخ القائمة كاملة:

mylist[:]

لتقسيم القائمة بدءا من العنصر الذي يحتوي على فهرس البداية إلى نهاية القائمة:

mylist[start:]

لتقسيم القائمة بدءا من البداية وحتى العنصر الذي يحتوي على مؤشر الإيقاف ولكن دون تضمينه:

mylist[:stop]

لتقسيم القائمة بدءا من العنصر ذو فهرس بدء إلى أعلى ولكن بدون تضمين العنصر ذي الفهرس إيقاف:

mylist[start:stop]

لتقسيم القائمة بالخطوة المدخلة:

mylist[::step]

يوجد بالأسفل مثال أساسي لكيفية تقسيم قائمة تبدأ من العنصر ذو الفهرس 1 حتى الفرس 4 ولكن لا تشمل العنصر مع الفهرس 4:

>>>friends = ["ahmed", "ali", "mahmoud", "adel", "mohamed"]
>>>friends[1:4]
output: ["ali", "mahmoud", "adel"]
4- كيفية تحديث قيمة العنصر في القائمة

لتغيير قيمة عنصر معين في القائمة عليك أن تؤشر إلى رقم الفهرس الخاص به:

>>>friends[index] = value

فيما يلي مثال يوضح كيفية تحديث قيمة العنصر الأخير في القائمة:

>>>friends = ["ahmed", "ali", "mahmoud", "adel"]
>>>firends[-1] = "mohamed"
>>>print(friends)
>>>output: ["ahmed", "ali", "mahmoud", "mohamed"]

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

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: list assignment index out of range

يمكنك أيضا تحديث شريحة من القائمة بقيم جديدة:

>>>friends = ["ahmed", "ali", "mahmoud"]
>>>friends[1:3] = ["adel"]
>>>print(friends)
>>>output: ["ahmed", "adel"]
يمكن أن تحتوي مجموعة الاستبدال على عناصر أصغر أو أكبر أو نفس عدد العناصر الموجودة في القائمة. هذا يسمح لك بتوسيع القائمة أو تقليصها.
5- كيفية إضافة عناصر إلى القائمة

تحتوي القائمة على طريقتين تسمحان لك بإضافة عناصر إلى القائمة وهما append و insert.

تضيف طريقة append عنصرا إلى نهاية القائمة. وتكون الصيغة كما يلي:

>>>mylist.append(element)

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

>>>friends = ["ahmed", "ali", "mahmoud", "adel"]
>>>friends.append("mohamed")
>>>print(friends)
>>>output: ["ahmed", "ali", "mahmoud", "adel", "mohamed"]

تضيف طريقة insert عنصرا في موضع معين في القائمة ولها الصيغة التالية:

>>>mylist.insert(index, element)

index هو الموضع الذي تريد إدراج العنصر فيه و element هو العنصر المراد إلحاقه بالقائمة. يوضح المثال التالي كيفية إضافة عنصر إلى القائمة في الموضع الأول:

>>>friends = ["ahmed", "ali", "mahmoud", "adel"]
>>>friends.insert(0, "mohamed")
>>>print(friends)
>>>output: ["mohamed","ahmed", "ali", "mahmoud", "adel"]

تسمح لك طريقة extend بتوسيع قائمة تحتوي على عناصر متعددة. وتأخذ أمر واحد ولها بناء الجملة التالي:

>>>friends.extend(list)

عناصر list ستكون مرفقة بنهاية القائمة كما هو موضح في المثال التالي:

>>>friends = ["ahmed", "ali", "mahmoud"]
>>>friends.extend(["adel", "hani"])
>>>print(friends)
>>>output: ["ahmed", "ali", "mahmoud", "adel", "hani"]
6- كيفية إزالة عنصر من القائمة

تأخذ طريقة remove أمر واحد وتزيل العنصر الأول بقيمة تطابق الأمر من القائمة:

>>>mylist.remove(element)
>>>friends = ["ahmed", "ali", "mahmoud"]
>>>friends.remove("ahmed")
>>>print(friends)
>>>output: ["ali", "mahmoud"]

إذا كان العنصر بالقيمة المحددة غير موجود فسيتم إظهار الخطأ ValueError:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: list.remove(x): x not in list

تأخذ طريقة pop أمر واحد وتزيل العنصر ذو الفهرس المطابق للأمر من القائمة:

>>>mylist.pop(element)

القيمة تكون اختيارية ويتم تعيينها افتراضيا على -1 وهو العنصر الأخير في القائمة. القيمة المرجعة للطريقة هي العنصر المحذوف وهذا مثال للتوضيح:

>>>friends = ["ahmed", "ali", "mahmoud"]
>>>friends.pop(1)
>>>print(friends)
>>>removed -> "ali"
>>>output: ["ahmed", "mahmoud"]

تتيح لك طريقة del إزالة أكثر من عنصر واحد فعلى سبيل المثال لإزالة أول عنصرين من القائمة يمكنك استخدام ما يلي:

>>>friends = ["ahmed", "ali", "mahmoud", "adel"]
>>>del friends[0:2]
>>>print(friends)
>>>deleted -> ("ahmed", "ali")
>>>output: ["mahmoud", "adel"]

لإزالة جميع العناصر عليك باستخدم طريقة clear والتي تحذف القائمة ولا تقبل أي أوامر:

>>>friends = ["ahmed", "ali", "mahmoud", "adel"]
>>>friends.clear()
>>>print(friends)
>>>output: []
7- كيف تحسب طول القائمة

تحسب الدالة len العدد الإجمالي لعناصر الكائن. وللعثور على طول قائمة عليك بتمريرها كوسيط للدالة len:

len(mylist)

إليك مثال لتوضيح الأمور أكثر:

>>>friends = ["ahmed", "ali", "mahmoud", "adel"]
>>>num = len(friends)
>>>print(num)
>>>output: 4
8- كيفية التكرار من خلال قائمة

للتكرار خلال جميع عناصر القائمة عليك باستخدم حلقة التكرار for:

>>>friends = ["ahmed", "ali", "mahmoud"]
>>>for friend in friends:
>>>    print(friend)
>>>output:
ahmed
ali
mahmoud

إذا كنت بحاجة إلى فهارس فلديك عدة طرق تحت تصرفك وأكثر الطرق شيوعا واستخدام هي الجمع بين دالتي range و len أو استخدام دالة enumerate.

يوضح المثال التالي كيفية طباعة الفهرس وقيمة كل عنصر في القائمة:

>>>friends = ["ahmed", "ali", "mahmoud"]
>>>for i in range(len(friends)):
>>>    print(f'{i} : {friends[i]}')
>>>output:
0 : ahmed
1 : ali
2 : mahmoud

يمكنك استخدام الدالة enumerate لتكرار القائمة بطريقة أكثر احترافية:

>>>friends = ["ahmed", "ali", "mahmoud"]
>>>for index, value in enumerate(friends):
>>>    print(f'{index} : {value}')
>>>output:
0 : ahmed
1 : ali
2 : mahmoud
9- كيفية التحقق من العنصر إذا كان موجودا في القائمة أم لا

للتحقق من وجود عنصر في قائمة يمكنك استخدام العامل in و not in:

>>>friends = ["ahmed", "ali", "mahmoud"]
>>>print("ahmed" in friends)

سيكون الناتج إما True أو False:

>>>output:
>>>True

إليك مثال آخر باستخدام الحالة الشرطية if:

>>>friends = ["ahmed", "ali", "mahmoud"]
>>>if "hani" not in friends:
>>>    print('no')
>>>else:
>>>    print('yes')
>>>output:
>>>no
10- دوال القائمة في لغة البرمجة بايثون

تقبل كائنات القائمة الدوال والطرق التالية:

لإضافة عنصر في نهاية القائمة. append(element)
لإزالة كافة العناصر من القائمة. clear()
لنسخ القائمة. copy()
لعرض عدد مرات ظهور "x" في القائمة. count(x)
لإضافة عناصر التكرار بنهاية القائمة. extend(iterable)
لعرض موضع التواجد الأول لعنصر بقيمة "X". index(x)
لإضافة عنصر في موضع معين. insert(i, x)
تزيل عنصرا من موضع معين. pop(i)
تزيل عنصر بقيمة معينة. remove()
لعكس عناصر القائمة. reverse()
لفرز عناصر القائمة. sort()

في هذه المقالة ناقشنا كيفية إنشاء القوائم والعمل معها في لغة البرمجة بايثون. وإذا كان لديك أي أسئلة أو ملاحظات فلا تتردد في ترك تعليق❤❤.

ادعمنا بتعليق