بسم الله الرحمن الرحيم
اللهم علّمنا ما ينفعنا وانفعنا بما علّمتنا إنك أنت العليم الحكيم
سنكمل في هذا الدرس الحديث عن القوائم كما بدأنا في الدرس السابق.
اللهم علّمنا ما ينفعنا وانفعنا بما علّمتنا إنك أنت العليم الحكيم
سنكمل في هذا الدرس الحديث عن القوائم كما بدأنا في الدرس السابق.
استخدام التكرارات (Loop) في القوائم
تساعد الحلقة على تنفيذ نفس المهمة على كل عنصر في القائمة الواحدة. على سبيل المثال لو كان لديك قائمة تحتوي على مجموعة من الأرقام,من المؤكد أنك ترغب في تنفيذ نفس العملية الحسابية على كل عنصر. عندما تريد القيام بذلك يمكنك بالطبع استخدام الحلقات بكل سهولة.
......
Python:
numbers = [10, 20, 30, 40, 50]
total_sum = 0
for number in numbers:
total_sum += number
print("The sum of the items in the list is:", total_sum)
لدينا قائمة مكونة من 5 عناصر ونريد جمعها إلى بعضها. بدأنا بتعريف متغير باسم total_sum بقيمة ابتدائية صفر. ثم أنشأنها حلقة للمرور على كافة العناصر الموجودة في القائمة وفي كل مرة يقوم بجمع العنصر إلى الـ total_sum . وفي نهاية الحلقة تكون قد جُمعت كافة الأرقام ثم قمنا بطباعة الناتج.
Python:
The sum of the items in the list is: 150
استخدام الدالة Range في القوائم
إذا كنت تريد إنشاء قائمة مكونه من عدد كبير من الأرقام المتتالية يمكنك استخدام الدالة range بدلًا من كتابة جميع الأرقام بداخل القائمة عن طريق استخدام الدالى list
كما في المثال التالي:
Python:
numbers = list(range(1, 50))
print(numbers)
تظهر القائمة بالشكل التالي:
Python:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49]
يمكننا أيضًا استخدام الدالة range لإخبار بايثون بتخطي أرقام معينة داخل القائمة. عن طريق إضافة مقدار الخطوة بين الأرقام إلى الدالة range . كما في المثال التالي:
Python:
even_numbers = list(range(2, 11, 2))
print(even_numbers)
ويكون الناتج كالتالي:
Python:
[2, 4, 6, 8, 10]
لإنشاء قائمة من الأرقام المربعة يمكننا أيضًا استخدام الدالة range في ذلك . لنفرض أنك تريد إنشاء قائمة بأول 10 أرقام مربعة سنقوم بالخطوات التالي:
1- سنقوم بإنشاء قائمة فارغة باسم sequares
2- سنستخدم الحلقة for لتكرار العمليات على كل قيمة من 1 إلى 10 باستخدام الـ range
3- بداخل الحلقة سنقوم برفع القيمة إلى الأس 2 عن طريق استخدام (2**) ثم سنقوم بتخزين هذه القيمة داخل متغير اسمه sequare
4- سنضيف قيمة المتغير sequare إلى القائمة sequares
5- سنقوم بطباعة القائمة.
Python:
squares = []
for value in range(1, 11):
square = value ** 2
squares.append(square)
print(squares)
سيظهر لنا الناتج بهذا الشكل:
Python:
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
إحصائيات بسيطة باستخدام القوائم
توجد بعض الدوال التي يمكن استخدامها عند التعامل مع قائم الأرقام يمكنك من خلالها العثور على أصغر قيمة أو أكبر قيمة في القائمة بسهولة. عن طريق الدالتين:
1- min
2- max
كما في المثال التالي:
Python:
digits = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
min(digits)
max(digits)
ويكون الناتج لهذه الدوال كما يلي:
Python:
0
9
ولإيجاد مجموع الأرقام في القائمة يمكننا استخدام الدالة sum كما في المثال التالي:
Python:
digits = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
sum(digits)
ويكون الناتج كالتالي:
Python:
45
لتحديد عدد مرات تكرار عنصر معين داخل قائمة يمكن استخدام الدالة count كما في المثال التالي:
Python:
numbers = [1, 2, 3, 4, 3, 2, 1, 3, 3, 5]
count_of_three = numbers.count(3)
print("The number of times the number 3 appears is:", count_of_three)
ويكون الناتج بهذا الشكل:
Python:
The number of times the number 3 appears is: 4
العمل على جزء من عناصر القائمة
يمكن العمل مع مجموعة محددة من عناصر القائمة بدلًا من العمل على القائمة بأكملها عن طريق ما يسمى بالتقسيم ( Slicing )
لإجراء تقسيم على قائمة يجب تحديد موقع العنصر الأول (index) وموقع العنصر الأخير للعناصر التي نريد العمل عليها من ضمن القائمة. كما في المثال التالي:
Python:
players = ['charles', 'martina', 'michael', 'florence', 'eli']
print(players[0:3])
print(players[:3])
print(players[2:])
print(players[:])
[SIZE=5]print(players[-3:])[/SIZE]
سنقوم الآن يتوضيح كل جملة طباعة في المثال السابق:
print(players[0:3]): هذا الأمر يطبع أول ثلاثة عناصر في القائمة (العناصر ذات المواقع 0، 1، 2)
print(players[:3]): في هذا الأمر تم حذف الموقع الأول، فيبدأ التقسيم من بداية القائمة حتى الموقع الرابع (العنصر ذو الموقع 3).
print(players[2:]): في هذا الأمر تم حذف الموقع الثاني ، فيبدأ التقسيم من الموقع 2 حتى نهاية القائمة.
print(players[:]): في هذا الأمر تم حذف الموقعين الأول والثاني ، فيقوم بطباعة كافة العناصر.
print(players[-3:]): هنا استخدمنا الموقع السالب -3 لاستخراج العناصر الثلاثة الأخيرة من القائمة.
ويكون الناتج كما يلي:
Python:
['charles', 'martina', 'michael']
['charles', 'martina', 'michael']
['michael', 'florence', 'eli']
['charles', 'martina', 'michael', 'florence', 'eli']
['michael', 'florence', 'eli']
يمكننا أيضًا استخدام التقسيم مع حلقة for , إذا كنت ترغب في تكرار جزء معين من القائمة. كما في المثال التالي:
Python:
players = ['charles', 'martina', 'michael', 'florence', 'eli']
print("Here are the first three players on my team:")
for player in players[:3]:
print(player.title())
ويكون الناتج كما يلي:
Python:
Here are the first three players on my team:
Charles
Martina
Michael
نسخ القوائم
في بايثون، يمكنك نسخ قائمة (list) بحيث تبدأ بقائمة موجودة بالفعل ثم تنشئ قائمة جديدة بناءً عليها. ولكن عند نسخ قائمة، من المهم التأكد من أنك تقوم بنسخها بشكل صحيح للحصول على قائمتين منفصلتين تماماً، بدلاً من الحصول على قائمة واحدة مشتركة بين المتغيرات.
لنسخ قائمة، يمكننا استخدام التقسيم (slicing) بدون تحديد أي مواقع ، أي نستخدم [:]. هذا يعني أننا نأخذ نسخة من القائمة الأصلية تبدأ من أول عنصر وتنتهي بآخر عنصر، وبالتالي نُنشئ نسخة جديدة تماماً من القائمة. كما في المثال التالي:
Python:
my_foods = ['pizza', 'falafel', 'carrot cake']
friend_foods = my_foods[:]
print("My favorite foods are:")
print(my_foods)
print("\nMy friend's favorite foods are:")
print(friend_foods)
قمنا بإنشاء قائمة my_foods ثم قمنا بإنشاء قائمة جديدة تسمة friend_foods وهي نسخة من القائمة الأولى. والناتج كما يلي:
Python:
My favorite foods are:
['pizza', 'falafel', 'carrot cake']
My friend's favorite foods are:
['pizza', 'falafel', 'carrot cake']
Tubles
هو نوع خاص من القوائم التي لا يمكن تعديل عناصرها. يتم استخدامها في حال كان هناك عناصر لا نريد تعييرها طول حياة البرنامج.
tuble يشبه القائمة لكن بدل استخدام الأقواس المربعة [ ] نستخدم الأقواس الدائرية ( ).
Python:
dimensions = (200, 50)
dimensions[0] = 250
في المثال السابق عند التعديل على قيمة العنصر الأول في الـ Tuble لن يسمح بايثون بذلك لأنها غير قابلة للتعديل. لذلك سيظهر رسالة خطأ كما يلي:
Python:
File "dimensions.py", line 2, in <module>
dimensions[0] = 250
TypeError: 'tuple' object does not support item assignment
إذا كنت تريد أن تنشئ عنصر واحد فقط على أنه tuble يجب إضافة فاصلة بعد العنصر لجعل بايثون يتعرف عليه كـ tuble كما في المثال : my_t = (3,)
يمكنك استخدام الحلقة for مع الـ tuble كما تستخدم مع القوائم بنفس الطريقة.
بينما لا يمكنك تعديل عناصر الـ tuble بعد تعريفها، يمكنك إعادة تعيين توبل جديد إلى نفس المتغير. كما في المثال التالي:
Python:
dimensions = (200, 50)
print("Original dimensions:")
for dimension in dimensions:
print(dimension)
dimensions = (400, 100)
print("\nModified dimensions:")
for dimension in dimensions:
print(dimension)
تدريب (1): قم بإنشاء قائمة تحتوي على 5 عناصر ثم قم بما يلي:
1- اطبع عناصر القائمة جميعها.
2- قم بتعديل العنصر الثاني إلى عنصر آخر تريده. ثم اطبع القائمة بعد التعديل.
3- أضف عنصر إلى نهاية القائمة وقم بحذف العنصر الأول من الاقئمة ثم اطبع القائمة بعد التعديل.
4- اطبع عدد عناصر القائمة.
1- اطبع عناصر القائمة جميعها.
2- قم بتعديل العنصر الثاني إلى عنصر آخر تريده. ثم اطبع القائمة بعد التعديل.
3- أضف عنصر إلى نهاية القائمة وقم بحذف العنصر الأول من الاقئمة ثم اطبع القائمة بعد التعديل.
4- اطبع عدد عناصر القائمة.
تدريب (2): أنشئ قائمة تحتوي على الأرقام من 20 إلى 100 :
1- أوجد الحد الأدنى والحد الأقصى للقائمة.
2- أوجد مجموع عناصر القائمة.
3- قم بتعديل العناصر في القائمة عن طريق إيجاد مكعب كل عنصر ثم قم بطباعة الناتجز
4-استخدم التقسيم لطباعة العناصر من الموقع الثاني إلى الموقع الخامس.
5- انسخ القائمة إلى قائمة جديدة وإضف رقم 4 إلى القائمة الأولى ورقم 9 إلى القائمة الثانية. ثم قم بطباعة القائمتين
6- قم بترتيب عناصر القائمة تنازليًا واطبعها.
1- أوجد الحد الأدنى والحد الأقصى للقائمة.
2- أوجد مجموع عناصر القائمة.
3- قم بتعديل العناصر في القائمة عن طريق إيجاد مكعب كل عنصر ثم قم بطباعة الناتجز
4-استخدم التقسيم لطباعة العناصر من الموقع الثاني إلى الموقع الخامس.
5- انسخ القائمة إلى قائمة جديدة وإضف رقم 4 إلى القائمة الأولى ورقم 9 إلى القائمة الثانية. ثم قم بطباعة القائمتين
6- قم بترتيب عناصر القائمة تنازليًا واطبعها.
تدريب(3): قم بإنشاء tuble تحتوي على 4 أسماء :
1- قم بطباعة العناصر الرابع والثاني.
2- أعد تعيين الـtuble بأربعة أسماء جديدة ثم اطبعها.
1- قم بطباعة العناصر الرابع والثاني.
2- أعد تعيين الـtuble بأربعة أسماء جديدة ثم اطبعها.
وبهذا نكون قد وصلنا إلى نهاية درسنا لهذا اليوم.
دمتم بحفظ الله ورعايتة.
التعديل الأخير: