القائمة الرئيسية

الصفحات

دورة البرمجة بلغة بايثون - الدرس الرابع والعشرون (القوائم Lists)

دورة البرمجة بلغة بايثون - الدرس الرابع والعشرون (القوائم Lists)
 

دورة البرمجة بلغة بايثون - الدرس الرابع والعشرون (القوائم Lists)

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


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


كيف تصنع قائمة؟

في بايثون ، يتم إنشاء قائمة بوضع جميع العناصر داخل أقواس مربعة [] ، مفصولة بفواصل.


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

# empty list
my_list = []

# list of integers
my_list = [1, 2, 3]

# list with mixed data types
my_list = [1, "Hello", 3.4]

يمكن أن تحتوي القائمة أيضًا على قائمة أخرى كعنصر. هذا يسمى قائمة متداخلة.

# nested list
my_list = ["mouse", [8, 4, 6], ['a']]

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

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


  • فهرس القائمة

يمكننا استخدام عامل الفهرس [] للوصول إلى عنصر في قائمة. في بايثون، تبدأ المؤشرات من 0. لذا ، فإن القائمة التي تحتوي على 5 عناصر سيكون لها فهرس من 0 إلى 4.


ستؤدي محاولة الوصول إلى فهارس غير هذه إلى ظهور خطأ في الفهرس. يجب أن يكون الفهرس عددًا صحيحًا. لا يمكننا استخدام عدد عائم أو أنواع أخرى ، سيؤدي ذلك إلى ظهور خطأ TypeError.


يتم الوصول إلى القوائم المتداخلة باستخدام الفهرسة المتداخلة.

# List indexing

my_list = ['p', 'r', 'o', 'b', 'e']

# Output: p
print(my_list[0])

# Output: o
print(my_list[2])

# Output: e
print(my_list[4])

# Nested List
n_list = ["Happy", [2, 0, 1, 5]]

# Nested indexing
print(n_list[0][1])

print(n_list[1][3])

# Error! Only integer can be used for indexing
print(my_list[4.0])

الناتج

p
o
e
a
5
Traceback (most recent call last):
  File "<string>", line 21, in <module>
TypeError: list indices must be integers or slices, not float


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

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

# Negative indexing in lists
my_list = ['p','r','o','b','e']

print(my_list[-1])

print(my_list[-5])


عندما نقوم بتشغيل البرنامج أعلاه ، سوف نحصل على المخرجات التالية:

e
p

فهرسة قائمة بايثون

قائمة الفهرسة في بايثون


كيف تقسم القوائم في بايثون؟

يمكننا الوصول إلى مجموعة من العناصر في قائمة باستخدام عامل التشغيل (النقطتان).

# List slicing in Python

my_list = ['p','r','o','g','r','a','m','i','z']

# elements 3rd to 5th
print(my_list[2:5])

# elements beginning to 4th
print(my_list[:-5])

# elements 6th to end
print(my_list[5:])

# elements beginning to end
print(my_list[:])


الناتج 

['o', 'g', 'r']
['p', 'r', 'o', 'g']
['a', 'm', 'i', 'z']
['p', 'r', 'o', 'g', 'r', 'a', 'm', 'i', 'z']

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

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


كيفية تغيير أو اضافة عناصر للقائمة؟

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


يمكننا استخدام عامل الإسناد (=) لتغيير عنصر أو مجموعة من العناصر.

# Correcting mistake values in a list
odd = [2, 4, 6, 8]

# change the 1st item    
odd[0] = 1            

print(odd)

# change 2nd to 4th items
odd[1:4] = [3, 5, 7]  

print(odd)                   

الناتج

[1, 4, 6, 8]
[1, 3, 5, 7]


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

# Appending and Extending lists in Python
odd = [1, 3, 5]

odd.append(7)

print(odd)

odd.extend([9, 11, 13])

print(odd)


الناتج

[1, 3, 5, 7]
[1, 3, 5, 7, 9, 11, 13]


يمكننا أيضًا استخدام عامل + لدمج قائمتين. وهذا ما يسمى أيضًا بالتسلسل concatenation.

يكرر عامل التشغيل * قائمة بعدد معين من المرات.

# Concatenating and repeating lists
odd = [1, 3, 5]

print(odd + [9, 7, 5])

print(["re"] * 3)


الناتج

[1, 3, 5, 9, 7, 5]
['re', 're', 're']

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

# Demonstration of list insert() method
odd = [1, 9]
odd.insert(1,3)

print(odd)

odd[2:2] = [5, 7]

print(odd)

الناتج

[1, 3, 9]
[1, 3, 5, 7, 9]

كيفية حذف أو إزالة العناصر من القائمة؟

يمكننا حذف عنصر واحد أو أكثر من القائمة باستخدام الكلمة الأساسية del. يمكنه حتى حذف القائمة بالكامل.

# Deleting list items
my_list = ['p', 'r', 'o', 'b', 'l', 'e', 'm']

# delete one item
del my_list[2]

print(my_list)

# delete multiple items
del my_list[1:5]

print(my_list)

# delete entire list
del my_list

# Error: List not defined
print(my_list)

الناتج

['p', 'r', 'b', 'l', 'e', 'm']
['p', 'm']
Traceback (most recent call last):
  File "<string>", line 18, in <module>
NameError: name 'my_list' is not defined

يمكننا استخدام الدالة ()remove لإزالة عنصر معين أو دالة ()pop لإزالة عنصر في الفهرس المحدد.


تقوم طريقة ()pop بإزالة العنصر الأخير وإرجاعه إذا لم يتم توفير الفهرس.  يساعدنا هذا في تنفيذ القوائم على هيئة مكدسات.

يمكننا أيضًا استخدام دالة ()clear لإفراغ القائمة.

my_list = ['p','r','o','b','l','e','m']
my_list.remove('p')

# Output: ['r', 'o', 'b', 'l', 'e', 'm']
print(my_list)

# Output: 'o'
print(my_list.pop(1))

# Output: ['r', 'b', 'l', 'e', 'm']
print(my_list)

# Output: 'm'
print(my_list.pop())

# Output: ['r', 'b', 'l', 'e']
print(my_list)

my_list.clear()

# Output: []
print(my_list)

الناتج

['r', 'o', 'b', 'l', 'e', 'm']
o
['r', 'b', 'l', 'e', 'm']
m
['r', 'b', 'l', 'e']
[]


أخيرًا ، يمكننا أيضًا حذف العناصر الموجودة في القائمة عن طريق تخصيص قائمة فارغة لشريحة من العناصر.

>>> my_list = ['p','r','o','b','l','e','m']
>>> my_list[2:3] = []
>>> my_list
['p', 'r', 'b', 'l', 'e', 'm']
>>> my_list[2:5] = []
>>> my_list
['p', 'r', 'm']

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

الأساليب المتوفرة مع كائنات القائمة في بايثون مُجدولة أدناه.

يتم الوصول إليها كـ ()list.method . تم بالفعل استخدام بعض الأساليب أعلاه.

()append - إضافة عنصر إلى نهاية القائمة

()extension - إضافة جميع عناصر القائمة إلى قائمة أخرى

()insert - أدخال عنصر في الفهرس المحدد

()remove - ازالة عنصر من القائمة

()pop  - ازالة عنصر وارجاع قيمة العنصر الموجود في الفهرس المحدد

()clear - ازالة كافة العناصر من القائمة

()index - إرجاع فهرس أول عنصر مطابق

()count - إرجاع عدد العناصر التي تم تمريرها كوسيطة

()Sort - فرز العناصر في قائمة بترتيب تصاعدي

()reverse  - لعكس ترتيب العناصر في القائمة

()copy - إرجاع نسخة ضحلة من القائمة


بعض الأمثلة على طرق قائمة بايثون:

# Python list methods
my_list = [3, 8, 1, 6, 0, 8, 4]

# Output: 1
print(my_list.index(8))

# Output: 2
print(my_list.count(8))

my_list.sort()

# Output: [0, 1, 3, 4, 6, 8, 8]
print(my_list)

my_list.reverse()

# Output: [8, 8, 6, 4, 3, 1, 0]
print(my_list)

الناتج

1
2
[0, 1, 3, 4, 6, 8, 8]
[8, 8, 6, 4, 3, 1, 0]


قائمة الاستيعاب: طريقة أنيقة لإنشاء قائمة جديدة

هي طريقة أنيقة وموجزة لإنشاء قائمة جديدة من قائمة موجودة في بايثون.


تتكون من تعبير متبوع بعبارة داخل أقواس مربعة.

 

فيما يلي مثال لعمل قائمة مع زيادة قوة كل عنصر بمقدار 2.

pow2 = [2 ** x for x in range(10)]
print(pow2)


الناتج

[1, 2, 4, 8, 16, 32, 64, 128, 256, 512]

هذا الكود يعادل الاتي:

pow2 = []
for x in range(10):
   pow2.append(2 ** x)

يمكن أن تحتوي قائمة الاستيعاب بشكل اختياري على المزيد من عبارات for أو if. يمكن لبيان if الاختياري أن يقوم بتصفية العناصر للقائمة الجديدة. وهنا بعض الأمثلة.

>>> pow2 = [2 ** x for x in range(10) if x > 5]
>>> pow2
[64, 128, 256, 512]
>>> odd = [x for x in range(20) if x % 2 == 1]
>>> odd
[1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
>>> [x+y for x in ['Python ','C '] for y in ['Language','Programming']]
['Python Language', 'Python Programming', 'C Language', 'C Programming']


عمليات أخرى للقوائم في بايثون

  • اختبار العضوية

يمكننا اختبار ما إذا كان العنصر موجودًا في القائمة أم لا ، باستخدام الكلمة الأساسية in.

my_list = ['p', 'r', 'o', 'b', 'l', 'e', 'm']

# Output: True
print('p' in my_list)

# Output: False
print('a' in my_list)

# Output: True
print('c' not in my_list)

الناتج

True
False
True

  • التكرار من خلال قائمة

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

for fruit in ['apple','banana','mango']:
    print("I like",fruit)

الناتج

I like apple
I like banana
I like mango
reaction:
Ahmed Taher
Ahmed Taher
مدون من العراق . احب البرمجة وكل ما يتعلق بالشبكات والسيرفرات وامن المعلومات . واسعى الى توفير جميع المصادر والمواد للامتحانات الدولية.

تعليقات