مرحبًا بك في الدرس الثامن من سلسلة أساسيات بايثون على موقع بايثون العرب. في الدرس السابق تعلمنا أنواع البيانات Data Types في Python، وفهمنا أن كل قيمة في بايثون لها نوع محدد مثل النصوص والأرقام والقيم المنطقية.
في هذا الدرس سنبدأ مع واحد من أهم أنواع البيانات التي ستستخدمها كثيرًا في بايثون، وهو القوائم Lists. القائمة تساعدك على تخزين أكثر من قيمة داخل متغير واحد، بدل أن تنشئ متغيرًا مستقلًا لكل قيمة.
تخيل أنك تريد تخزين أسماء مجموعة طلاب. بدل أن تكتب متغيرًا لكل طالب، يمكنك وضع جميع الأسماء داخل قائمة واحدة، ثم الوصول إليها وتعديلها وإضافة عناصر جديدة لها بسهولة.
{getToc} $title={محتوى المقال}
{alertInfo} يمكنك تجربة جميع الأمثلة مباشرة من خلال محرر بايثون العرب بدون تثبيت أي برنامج.
ما هي List في بايثون؟
القائمة List في بايثون هي نوع بيانات يستخدم لتخزين مجموعة من العناصر داخل متغير واحد.
وتكتب القائمة باستخدام الأقواس المربعة []، وتفصل بين العناصر باستخدام الفاصلة.
مثال بسيط:
fruits = ["Apple", "Banana", "Orange"]
print(fruits)
الناتج:
['Apple', 'Banana', 'Orange']
في المثال السابق أنشأنا قائمة اسمها fruits، ووضعنا داخلها ثلاثة عناصر. كل عنصر داخل القائمة يمكن الوصول إليه أو تعديله أو حذفه لاحقًا.
لماذا نستخدم القوائم في بايثون؟
نستخدم القوائم عندما نريد تخزين أكثر من قيمة مرتبطة ببعضها داخل متغير واحد.
بدلًا من كتابة هذا الشكل:
student1 = "Ahmed"
student2 = "Sara"
student3 = "Omar"
يمكننا استخدام قائمة واحدة:
students = ["Ahmed", "Sara", "Omar"]
هذا يجعل الكود أقصر، أوضح، وأسهل في التعديل، خصوصًا عندما يكون لديك عدد كبير من العناصر.
إنشاء قائمة في بايثون
لإنشاء قائمة نكتب اسم المتغير، ثم علامة يساوي، ثم العناصر داخل أقواس مربعة.
colors = ["Red", "Green", "Blue"]
ويمكن إنشاء قائمة أرقام:
numbers = [1, 2, 3, 4, 5]
ويمكن أيضًا إنشاء قائمة تحتوي على أنواع مختلفة من البيانات:
person = ["Ahmed", 25, True]
{alertWarning} رغم أن بايثون تسمح بوجود أنواع مختلفة داخل نفس القائمة، إلا أن الأفضل للمبتدئ أن يجعل عناصر القائمة من نفس النوع عندما يكون ذلك ممكنًا، حتى يكون الكود أوضح وأسهل في الفهم.
الوصول إلى عناصر القائمة باستخدام Index
كل عنصر داخل القائمة له رقم يسمى Index. المهم أن تعرف أن العد في بايثون يبدأ من الصفر، وليس من الرقم واحد.
مثال:
fruits = ["Apple", "Banana", "Orange"]
print(fruits[0])
print(fruits[1])
print(fruits[2])
الناتج:
Apple
Banana
Orange
العنصر الأول رقمه 0، والعنصر الثاني رقمه 1، والعنصر الثالث رقمه 2.
| العنصر | رقم الفهرس Index |
|---|---|
Apple |
0 |
Banana |
1 |
Orange |
2 |
الوصول إلى آخر عنصر في القائمة
في بايثون يمكنك استخدام الأرقام السالبة للوصول إلى عناصر القائمة من النهاية.
fruits = ["Apple", "Banana", "Orange"]
print(fruits[-1])
print(fruits[-2])
الناتج:
Orange
Banana
الرقم -1 يعني آخر عنصر، والرقم -2 يعني العنصر الذي قبله.
تعديل عنصر داخل القائمة
القوائم في بايثون قابلة للتعديل، وهذا يعني أنك تستطيع تغيير قيمة عنصر داخل القائمة بعد إنشائها.
fruits = ["Apple", "Banana", "Orange"]
fruits[1] = "Mango"
print(fruits)
الناتج:
['Apple', 'Mango', 'Orange']
هنا قمنا بتغيير العنصر صاحب الفهرس 1 من Banana إلى Mango.
إضافة عنصر جديد باستخدام append
لإضافة عنصر جديد في نهاية القائمة نستخدم الدالة append().
fruits = ["Apple", "Banana"]
fruits.append("Orange")
print(fruits)
الناتج:
['Apple', 'Banana', 'Orange']
{alertSuccess} استخدم append عندما تريد إضافة عنصر جديد في نهاية القائمة.
إضافة عنصر في مكان محدد باستخدام insert
إذا أردت إضافة عنصر في مكان محدد داخل القائمة، استخدم الدالة insert().
fruits = ["Apple", "Orange"]
fruits.insert(1, "Banana")
print(fruits)
الناتج:
['Apple', 'Banana', 'Orange']
في هذا المثال أضفنا Banana في المكان رقم 1.
حذف عنصر من القائمة باستخدام remove
لحذف عنصر من القائمة حسب قيمته، نستخدم الدالة remove().
fruits = ["Apple", "Banana", "Orange"]
fruits.remove("Banana")
print(fruits)
الناتج:
['Apple', 'Orange']
الدالة remove() تبحث عن القيمة وتحذفها من القائمة.
{alertWarning} إذا حاولت حذف عنصر غير موجود باستخدام remove، ستظهر لك رسالة خطأ. لذلك تأكد أن العنصر موجود قبل حذفه.
حذف عنصر باستخدام pop
إذا أردت حذف عنصر حسب رقمه داخل القائمة، استخدم الدالة pop().
fruits = ["Apple", "Banana", "Orange"]
fruits.pop(1)
print(fruits)
الناتج:
['Apple', 'Orange']
هنا حذفنا العنصر صاحب الفهرس 1، وهو Banana.
وإذا استخدمت pop() بدون رقم، سيتم حذف آخر عنصر:
fruits = ["Apple", "Banana", "Orange"]
fruits.pop()
print(fruits)
الناتج:
['Apple', 'Banana']
معرفة عدد عناصر القائمة باستخدام len
لمعرفة عدد العناصر داخل القائمة نستخدم الدالة len().
fruits = ["Apple", "Banana", "Orange"]
print(len(fruits))
الناتج:
3
الدالة len() مفيدة جدًا عندما تريد معرفة حجم القائمة، أو عندما تريد استخدامها داخل الحلقات لاحقًا.
ترتيب عناصر القائمة باستخدام sort
يمكنك ترتيب عناصر القائمة باستخدام الدالة sort().
numbers = [5, 2, 9, 1]
numbers.sort()
print(numbers)
الناتج:
[1, 2, 5, 9]
ويمكن ترتيب قائمة نصوص:
names = ["Omar", "Ali", "Sara"]
names.sort()
print(names)
الناتج:
['Ali', 'Omar', 'Sara']
عكس ترتيب القائمة باستخدام reverse
لعكس ترتيب عناصر القائمة نستخدم الدالة reverse().
numbers = [1, 2, 3, 4]
numbers.reverse()
print(numbers)
الناتج:
[4, 3, 2, 1]
المرور على عناصر القائمة باستخدام for
من أكثر استخدامات القوائم في بايثون أنك تمر على عناصرها واحدًا تلو الآخر باستخدام حلقة for.
fruits = ["Apple", "Banana", "Orange"]
for fruit in fruits:
print(fruit)
الناتج:
Apple
Banana
Orange
هذا الأسلوب مهم جدًا، وستستخدمه لاحقًا مع الحلقات، البحث داخل القوائم، حساب المجموع، فلترة العناصر، وبناء البرامج العملية.
أهم دوال القوائم في بايثون
| الدالة | وظيفتها | مثال مختصر |
|---|---|---|
append() |
إضافة عنصر في نهاية القائمة | items.append("A") |
insert() |
إضافة عنصر في مكان محدد | items.insert(1, "A") |
remove() |
حذف عنصر حسب قيمته | items.remove("A") |
pop() |
حذف عنصر حسب الفهرس أو حذف آخر عنصر | items.pop() |
len() |
معرفة عدد العناصر | len(items) |
sort() |
ترتيب القائمة | items.sort() |
reverse() |
عكس ترتيب القائمة | items.reverse() |
خطأ شائع: IndexError عند استخدام رقم غير موجود
إذا حاولت الوصول إلى عنصر برقم غير موجود داخل القائمة، سيظهر خطأ IndexError.
fruits = ["Apple", "Banana"]
print(fruits[2])
سبب الخطأ أن القائمة تحتوي على عنصرين فقط، أرقامهما:
0
1
ولا يوجد عنصر رقمه 2.
{alertError} قبل الوصول إلى عنصر داخل القائمة، تأكد أن الفهرس موجود. تذكر دائمًا أن العد يبدأ من 0.
مثال عملي صغير على القوائم
في هذا المثال سننشئ قائمة مهام بسيطة، ثم نضيف مهمة جديدة، ونحذف مهمة، ونطبع عدد المهام.
tasks = ["Study Python", "Practice coding", "Read notes"]
tasks.append("Solve exercise")
tasks.remove("Read notes")
print(tasks)
print("عدد المهام:", len(tasks))
هذا المثال يوضح كيف يمكن استخدام القوائم في شيء قريب من الواقع، مثل قائمة مهام أو قائمة أسماء أو قائمة منتجات.
تمرين بسيط لك
أنشئ قائمة تحتوي على أسماء 5 أصدقاء، ثم قم بالتالي:
- اطبع أول اسم في القائمة.
- اطبع آخر اسم باستخدام الفهرس السالب.
- أضف اسمًا جديدًا باستخدام
append(). - احذف اسمًا باستخدام
remove(). - اطبع عدد العناصر باستخدام
len().
جرّب التمرين في محرر بايثون العرب، ثم غيّر الأسماء وشاهد النتيجة.
روابط مفيدة
- أساسيات بايثون 7: شرح أنواع البيانات Data Types
- أساسيات بايثون 17: شرح Tuples في Python
- أساسيات بايثون 19: شرح Sets في Python
- الفرق بين append و extend في Python
- توثيق Python الرسمي للقوائم
الخلاصة
في هذا الدرس تعلمنا أن القوائم Lists من أهم أنواع البيانات في بايثون، لأنها تسمح لنا بتخزين أكثر من قيمة داخل متغير واحد.
تعلمنا كيف ننشئ قائمة، وكيف نصل إلى عناصرها باستخدام Index، وكيف نعدل العناصر، ونضيف عناصر جديدة باستخدام append() و insert()، ونحذف العناصر باستخدام remove() و pop().
وتعلمنا أيضًا استخدام len() لمعرفة عدد العناصر، و sort() لترتيب القائمة، و reverse() لعكس ترتيبها.
{alertSuccess} الخلاصة السريعة: إذا أردت تخزين عدة قيم مرتبطة ببعضها في بايثون، فاستخدم List. وإذا أردت الوصول إلى عنصر، تذكر أن العد يبدأ من الصفر.