تعلم لغة Python الفصل 4 : العمل مع القوائم (WORKING WITH LISTS ) الجزء 1

sparrow
0

 



الفصل : 4

الجزء : 1

العنوان : العمل مع القوائم (WORKING WITH LISTS )





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


التكرار خلال قائمة كاملة Looping Through an Entire List


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


عندما تريد القيام بنفس الإجراء مع كل عنصر في قائمة، يمكنك استخدام for loop في Python.


افترض أن لدينا قائمة بأسماء السحرة، ونريد طباعة كل اسم في القائمة. يمكننا القيام بذلك عن طريق استرجاع كل اسم من القائمة بشكل فردي، ولكن هذا النهج قد يسبب عدة مشاكل. أولاً، سيكون مكررًا للقيام بذلك مع قائمة طويلة من الأسماء. أيضًا، سيكون علينا تغيير الشيفرة في كل مرة يتغير فيها طول القائمة. استخدام for loop يتجنب كل من هذه المشكلات عن طريق السماح لـ Python بإدارة هذه القضايا داخليًا.


لنستخدم for loop لطباعة كل اسم في قائمة السحرة:



magicians = ['alice', 'david', 'carolina']

for magician in magicians:

print(magician)



نبدأ بتعريف قائمة، تمامًا كما فعلنا في الفصل الثالث. ثم نعرّف for loop. هذا السطر يخبر Python بسحب اسم من قائمة magicians وربطه بمتغير magician. بعد ذلك، نخبر Python بطباعة الاسم الذي تم تعيينه للتو إلى magician. ثم يكرر Python هذين السطرين الأخيرين، مرة لكل اسم في القائمة. قد يساعدك في قراءة هذه الشيفرة كـ "لكل ساحر في قائمة السحرة، اطبع اسم الساحر."


الإخراج هو طباعة بسيطة لكل اسم في القائمة:



alice

david

carolina



نظرة أقرب على التكرار

التكرار مهم لأنه واحد من أكثر الطرق شيوعًا التي يستخدمها الكمبيوتر لأتمتة المهام المتكررة. على سبيل المثال، في تكرار بسيط مثل الذي استخدمناه في magicians.py، يقرأ Python في البداية السطر الأول من التكرار:


python

for magician in magicians:



يخبر هذا السطر Python باسترجاع القيمة الأولى من قائمة magicians وربطها بمتغير magician. هذه القيمة الأولى هي 'alice'. ثم يقرأ Python السطر التالي:



print(magician)



يطبع Python القيمة الحالية للمتغير magician، والتي لا تزال 'alice'. لأن القائمة تحتوي على قيم أخرى، يعود Python إلى السطر الأول من التكرار:


python

for magician in magicians:



يسترجع Python الاسم التالي في القائمة، 'david'، ويربط تلك القيمة بمتغير magician. ثم ينفذ Python السطر:



print(magician)



يطبع Python القيمة الحالية للمتغير magician مرة أخرى، والتي هي الآن 'david'. يكرر Python التكرار بالكامل مرة أخرى مع القيمة الأخيرة في القائمة، 'carolina'. لأن القائمة لم تعد تحتوي على قيم أخرى، ينتقل Python إلى السطر التالي في البرنامج. في هذه الحالة لا يوجد شيء بعد for loop، لذلك ينتهي البرنامج.


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


أيضًا، تذكر عند كتابة تكرارات for الخاصة بك أنه يمكنك اختيار أي اسم تريده للمتغير المؤقت الذي سيتم ربطه بكل قيمة في القائمة. ومع ذلك، من المفيد اختيار اسم ذو معنى يمثل عنصرًا فرديًا من القائمة. على سبيل المثال، إليك طريقة جيدة لبدء for loop لقائمة من القطط، قائمة من الكلاب، وقائمة عامة من العناصر:



for cat in cats:

for dog in dogs:

for item in list_of_items:



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




القيام بمزيد من العمل داخل for loop


يمكنك فعل أي شيء تقريبًا مع كل عنصر داخل for loop. دعونا نبني على المثال السابق عن طريق طباعة رسالة لكل ساحر، تخبره أنه قدم خدعة رائعة:



magicians = ['alice', 'david', 'carolina']

for magician in magicians:

print(f"{magician.title()}, that was a great trick!")



الفرق الوحيد في هذه الشيفرة هو حيث نقوم بتكوين رسالة لكل ساحر، بدءًا باسم ذلك الساحر. في المرة الأولى خلال التكرار تكون قيمة magician هي 'alice'، لذلك يبدأ Python الرسالة الأولى بالاسم 'Alice'. في المرة الثانية، ستبدأ الرسالة بـ 'David'، وفي المرة الثالثة، ستبدأ الرسالة بـ 'Carolina'.


الإخراج يظهر رسالة شخصية لكل ساحر في القائمة:



Alice, that was a great trick!

David, that was a great trick!

Carolina, that was a great trick!



يمكنك أيضًا كتابة العديد من الأسطر التي تريدها داخل for loop. كل سطر مؤقت يتبع السطر `for magician in magicians` يعتبر داخل التكرار، وكل سطر مؤقت يتم تنفيذه مرة واحدة لكل قيمة في القائمة. لذلك، يمكنك القيام بالعديد من العمليات التي تريدها مع كل قيمة في القائمة.


لنضف سطرًا ثانيًا إلى رسالتنا، نقول لكل ساحر أننا نتطلع إلى خدعتهم التالية:



magicians = ['alice', 'david', 'carolina']

for magician in magicians:

print(f"{magician.title()}, that was a great trick!")

print(f"I can't wait to see your next trick, {magician.title()}.\n")



لأننا قمنا بتعويض كل من النداءات إلى `print()`، سيتم تنفيذ كل سطر مرة واحدة لكل ساحر في القائمة. الخط الجديد ("\n") في النداء الثاني إلى `print()` يدرج سطرًا فارغًا بعد كل مرور خلال التكرار. هذا ينشئ مجموعة من الرسائل التي تم تجميعها بشكل أنيق لكل شخص في القائمة:




Alice, that was a great trick!

I can't wait to see your next trick, Alice.


David, that was a great trick!

I can't wait to see your next trick, David.


Carolina, that was a great trick!

I can't wait to see your next trick, Carolina.



يمكنك استخدام العديد من الأسطر كما تشاء في التكرارات الخاصة بك. في الممارسة، ستجد في الغالب أنه من المفيد القيام بعدة عمليات مختلفة مع كل عنصر في القائمة عند استخدام for loop.


القيام بشيء بعد for loop


ماذا يحدث بمجرد أن ينتهي for loop من التنفيذ؟ عادةً، سترغب في تلخيص كتلة من الإخراج أو الانتقال إلى عمل آخر يجب أن يقوم به برنامجك.


أي أسطر من الشيفرة بعد for loop التي لم يتم تعويضها يتم تنفيذها مرة واحدة دون تكرار. دعونا نكتب شكرًا لمجموعة السحرة ككل، نشكرهم على عرض سحري رائع. لعرض هذه الرسالة الجماعية بعد طباعة جميع الرسائل الفردية، نضع رسالة الشكر بعد for loop، بدون تعويض:



magicians = ['alice', 'david', 'carolina']

for magician in magicians:

print(f"{magician.title()}, that was a great trick!")

print(f"I can't wait to see your next trick, {magician.title()}.\n")


print("Thank you, everyone. That was a great magic show!")



النداءين الأولين إلى `print()` يتم تكرارهما مرة واحدة لكل ساحر في القائمة، كما رأيت سابقًا. ومع ذلك، لأن السطر الأخير غير معوض، يتم طباعته مرة واحدة فقط:



Alice, that was a great trick!

I can't wait to see your next trick, Alice.


David, that was a great trick!

I can't wait to see your next trick, David.


Carolina, that was a great trick!

I can't wait to see your next trick, Carolina.


Thank you, everyone. That was a great magic show!



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


تجنب أخطاء التراجع (Avoiding Indentation Errors)


تستخدم Python التراجع (indentation) لتحديد كيفية ارتباط سطر أو مجموعة من الأسطر بباقي البرنامج. في الأمثلة السابقة، كانت الأسطر التي تطبع الرسائل للسحرة الفرديين جزءًا من for loop لأنها كانت متراجعة. استخدام Python للتراجع يجعل الشيفرة سهلة القراءة للغاية. بشكل أساسي، يستخدم الفراغات البيضاء لإجبارك على كتابة شيفرة منسقة بشكل جيد مع هيكل مرئي واضح. في برامج Python الأطول، ستلاحظ كتلًا من الشيفرة متراجعة على عدة مستويات مختلفة. تساعدك هذه المستويات من التراجع على اكتساب فهم عام لتنظيم البرنامج الكلي.


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


دعنا نلقي نظرة على بعض أخطاء التراجع الأكثر شيوعًا.


نسيان التراجع


دائمًا قم بتراجع السطر بعد عبارة for في الحلقة. إذا نسيت، ستذكرك Python بذلك:



النداء إلى print() ❶ يجب أن يكون متراجعًا، لكنه ليس كذلك. عندما تتوقع Python كتلة متراجعة ولا تجد واحدة، تخبرك أي سطر واجهت فيه مشكلة:



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


نسيان تراجع الأسطر الإضافية


أحيانًا تعمل الحلقة بدون أي أخطاء ولكنها لا تنتج النتيجة المتوقعة. يمكن أن يحدث هذا عندما تحاول القيام بعدة مهام في حلقة وتنسى تراجع بعض أسطرها.


على سبيل المثال، هذا ما يحدث عندما ننسى تراجع السطر الثاني في الحلقة التي تخبر كل ساحر أننا نتطلع إلى خدعتهم التالية:



النداء الثاني إلى print() ❶ من المفترض أن يكون متراجعًا، ولكن لأن Python تجد على الأقل سطرًا واحدًا متراجعًا بعد عبارة for، فإنها لا تبلغ عن خطأ. نتيجة لذلك، يتم تنفيذ النداء الأول إلى print() مرة واحدة لكل اسم في القائمة لأنه متراجع. النداء الثاني إلى print() ليس متراجعًا، لذا يتم تنفيذه مرة واحدة فقط بعد انتهاء الحلقة. لأن القيمة النهائية المرتبطة بـ magician هي 'carolina'، فهي الوحيدة التي تتلقى رسالة "نتطلع إلى خدعتك التالية":


plaintext

Alice, that was a great trick!

David, that was a great trick!

Carolina, that was a great trick!

I can't wait to see your next trick, Carolina.



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


التراجع غير الضروري


إذا قمت بتراجع سطر بطريق الخطأ لا يحتاج إلى التراجع، ستخبرك Python عن التراجع غير المتوقع:


لا نحتاج إلى تراجع النداء إلى print()، لأنه ليس جزءًا من حلقة؛ لذلك، تبلغ Python عن هذا الخطأ:


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


التراجع غير الضروري بعد الحلقة


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


على سبيل المثال، دعونا نرى ما يحدث عندما نخطئ في تراجع السطر الذي شكر السحرة كمجموعة على عرض رائع:




لأن السطر الأخير ❶ متراجع، يتم طباعته مرة لكل شخص في القائمة:


plaintext

Alice, that was a great trick!

I can't wait to see your next trick, Alice.

Thank you everyone, that was a great magic show!

David, that was a great trick!

I can't wait to see your next trick, David.

Thank you everyone, that was a great magic show!

Carolina, that was a great trick!

I can't wait to see your next trick, Carolina.

Thank you everyone, that was a great magic show!



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


نسيان النقطتين


النقطتان في نهاية عبارة for تخبران Python بتفسير السطر التالي كبداية حلقة.




إذا نسيت النقطتين ❶ بطريق الخطأ، ستحصل على خطأ في الصيغة لأن Python لا تعرف بالضبط ما تحاول فعله:



Python لا تعرف إذا كنت ببساطة قد نسيت النقطتين، أو إذا كنت تعني كتابة شيفرة إضافية لإعداد حلقة أكثر تعقيدًا. إذا كان المترجم يمكنه تحديد إصلاح محتمل فسيوصي به، مثل إضافة نقطتين في نهاية السطر، كما يفعل هنا مع الاستجابة expected ':'. بعض الأخطاء لها إصلاحات سهلة وواضحة، بفضل الاقتراحات في تتبعات الأخطاء الخاصة بـ Python. بعض الأخطاء أصعب بكثير في الحل، حتى عندما يتطلب الإصلاح النهائي حرفًا واحدًا فقط. لا تشعر بالسوء عندما يأخذك العثور على إصلاح صغير وقتًا طويلاً؛ أنت لست وحدك على الإطلاق في هذه التجربة.



جرب بنفسك


تمرين 4-1. البيتزا:

فكر في ثلاثة أنواع على الأقل من البيتزا المفضلة لديك. خزّن أسماء هذه البيتزا في قائمة، ثم استخدم for loop لطباعة اسم كل بيتزا.

عدّل for loop لطباعة جملة باستخدام اسم البيتزا بدلاً من طباعة الاسم فقط. لكل بيتزا، يجب أن يكون لديك سطر واحد من المخرجات يحتوي على بيان بسيط مثل "أنا أحب بيتزا البيبروني".

أضف سطرًا في نهاية البرنامج، خارج for loop، يوضح مدى حبك للبيتزا. يجب أن تتكون المخرجات من ثلاثة أسطر أو أكثر عن أنواع البيتزا التي تحبها، ثم جملة إضافية، مثل "أنا حقاً أحب البيتزا!"


تمرين 4-2. الحيوانات:

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

عدّل البرنامج لطباعة بيان حول كل حيوان، مثل "الكلب سيكون حيوانًا أليفًا رائعًا".

أضف سطرًا في نهاية البرنامج، يوضح ما يشترك فيه هذه الحيوانات. يمكنك طباعة جملة، مثل "أي من هذه الحيوانات سيكون حيوانًا أليفًا رائعًا!"

 


إنشاء قوائم رقمية (Making Numerical Lists)


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

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


استخدام الدالة range()


تجعل دالة range() في Python من السهل توليد سلسلة من الأرقام. على سبيل المثال، يمكنك استخدام دالة range() لطباعة سلسلة من الأرقام مثل هذه:



على الرغم من أن هذه الشيفرة تبدو كما لو أنها ستطبع الأرقام من 1 إلى 5، إلا أنها لا تطبع الرقم 5:



في هذا المثال، تطبع range() الأرقام من 1 إلى 4 فقط. هذه نتيجة أخرى لسلوك الفارق بواحد الذي ستراه غالبًا في لغات البرمجة. تسبب دالة range() بدء Python في العد من القيمة الأولى التي تعطيها، وتتوقف عندما تصل إلى القيمة الثانية التي توفرها. نظرًا لأنها تتوقف عند تلك القيمة الثانية، فإن المخرجات لا تحتوي على القيمة النهائية، التي كانت ستكون 5 في هذه الحالة.


لطباعة الأرقام من 1 إلى 5، يمكنك استخدام range(1, 6):



هذه المرة تبدأ المخرجات عند 1 وتنتهي عند 5:



إذا كانت مخرجاتك مختلفة عن ما تتوقعه عند استخدام range()، حاول تعديل القيمة النهائية بمقدار 1.


يمكنك أيضًا تمرير range() وسيطة واحدة فقط، وستبدأ سلسلة الأرقام عند 0. على سبيل المثال، range(6) ستعيد الأرقام من 0 إلى 5.


استخدام range() لإنشاء قائمة من الأرقام


إذا كنت ترغب في إنشاء قائمة من الأرقام، يمكنك تحويل نتائج range() مباشرة إلى قائمة باستخدام دالة list(). عندما تغلف list() حول نداء إلى دالة range()، ستكون النتيجة قائمة من الأرقام.


في المثال في القسم السابق، قمنا ببساطة بطباعة سلسلة من الأرقام. يمكننا استخدام list() لتحويل تلك المجموعة من الأرقام إلى قائمة:



النتيجة هي:



يمكننا أيضًا استخدام دالة range() لتخبر Python بتخطي الأرقام في نطاق معين. إذا مررت وسيطة ثالثة إلى range()، ستستخدم Python تلك القيمة كحجم خطوة عند توليد الأرقام.


على سبيل المثال، إليك كيفية سرد الأرقام الزوجية بين 1 و 10:



في هذا المثال، تبدأ دالة range() بالقيمة 2 ثم تضيف 2 إلى تلك القيمة. تضيف 2 بشكل متكرر حتى تصل إلى أو تتجاوز القيمة النهائية، 11، وتنتج هذه النتيجة:


يمكنك إنشاء أي مجموعة تقريبًا من الأرقام التي تريدها باستخدام دالة range(). على سبيل المثال، فكر في كيفية إنشاء قائمة بأول 10 أرقام مربعة (أي مربع كل عدد صحيح من 1 إلى 10). في Python، يمثل النجمان (**) الأسس. إليك كيفية وضع أول 10 أرقام مربعة في قائمة:



squares = []

for value in range (1, 11):

square = value ** 2

squares.append(square)

print(squares)



نبدأ بقائمة فارغة تسمى squares. ثم نخبر Python بالمرور عبر كل قيمة من 1 إلى 10 باستخدام دالة range(). داخل الحلقة، يتم رفع القيمة الحالية إلى القوة الثانية وتعيينها إلى المتغير square ❶. يتم بعد ذلك إضافة كل قيمة جديدة من square إلى قائمة squares ❷. أخيرًا، عند انتهاء الحلقة من التشغيل، تتم طباعة قائمة المربعات:



لكتابة هذه الشيفرة بشكل أكثر اختصارًا، يمكنك حذف المتغير المؤقت square وإضافة كل قيمة جديدة مباشرة إلى القائمة:



يؤدي هذا السطر نفس العمل الذي تقوم به الأسطر داخل for loop في القائمة السابقة. يتم رفع كل قيمة في الحلقة إلى القوة الثانية ثم إضافتها مباشرة إلى قائمة المربعات.


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


الإحصاءات البسيطة مع قائمة الأرقام

بضع دوال Python تكون مفيدة عند العمل مع قوائم الأرقام. على سبيل المثال، يمكنك بسهولة العثور على الحد الأدنى، الحد الأقصى، ومجموع قائمة الأرقام:



ملاحظة

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

 


ال List Comprehensions


النهج الموصوف سابقًا لتوليد قائمة المربعات مستخدم فيه ثلاث أو أربع أسطر من الشيفرة. تسمح لك list comprehension بتوليد هذه القائمة نفسها في سطر واحد فقط من الشيفرة. تجمع list comprehension بين for loop وإنشاء عناصر جديدة في سطر واحد، وتضيف تلقائيًا كل عنصر جديد. لا يتم تقديم list comprehensions دائمًا للمبتدئين، لكنني قمت بتضمينها هنا لأنك ستراها على الأرجح بمجرد أن تبدأ في النظر إلى شيفرة الآخرين.


المثال التالي يبني نفس قائمة الأرقام المربعة التي رأيتها سابقًا ولكن باستخدام list comprehension:




لاستخدام هذا الصياغة، ابدأ باسم وصفي للقائمة، مثل squares. بعد ذلك، افتح مجموعة من الأقواس المربعة وحدد التعبير للقيم التي تريد تخزينها في القائمة الجديدة. في هذا المثال التعبير هو value**2، الذي يرفع القيمة إلى القوة الثانية. ثم، اكتب for loop لتوليد الأرقام التي تريد إدخالها في التعبير، وأغلق الأقواس المربعة. for loop في هذا المثال هي for value in range(1, 11)، التي تغذي القيم من 1 إلى 10 في التعبير value**2. لاحظ أنه لا يتم استخدام النقطتين في نهاية عبارة for.


النتيجة هي نفس قائمة الأرقام المربعة التي رأيتها سابقًا:



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



جربها بنفسك


تمرين 4-3. العد إلى عشرين:

استخدم for loop لطباعة الأرقام من 1 إلى 20، بما في ذلك.


تمرين 4-4. مليون:

قم بإنشاء قائمة بالأرقام من واحد إلى مليون، ثم استخدم for loop لطباعة الأرقام. (إذا كان الإخراج يستغرق وقتًا طويلاً، أوقفه بالضغط على CTRL-C أو بإغلاق نافذة الإخراج).


تمرين 4-5. جمع مليون:

قم بإنشاء قائمة بالأرقام من واحد إلى مليون، ثم استخدم الدالتين min() و max() للتأكد من أن قائمتك تبدأ من واحد وتنتهي عند مليون. أيضًا، استخدم دالة sum() لترى مدى سرعة Python في جمع مليون رقم.


تمرين 4-6. الأرقام الفردية:

استخدم الوسيط الثالث في دالة range() لإنشاء قائمة بالأرقام الفردية من 1 إلى 20. استخدم for loop لطباعة كل رقم.


تمرين 4-7. الثلاثات:

قم بإنشاء قائمة بالضربات المتعددة للرقم 3، من 3 إلى 30. استخدم for loop لطباعة الأرقام في قائمتك.


تمرين 4-8. المكعبات:

الرقم الذي يتم رفعه إلى القوة الثالثة يسمى مكعب. على سبيل المثال، مكعب 2 يُكتب في Python كـ 2**3. قم بإنشاء قائمة بأول 10 مكعبات (أي مكعب كل عدد صحيح من 1 إلى 10)، واستخدم for loop لطباعة قيمة كل مكعب.


تمرين 4-9. استنتاج المكعبات:

استخدم list comprehension لإنشاء قائمة بأول 10 مكعبات.


 

النهاية


نكون هنا انتهينا من الجزء 1 من الفصل 4 من منهج تعلم Python من كتاب python crash course بالعربية 


واذا واجهتك اي مشكلة في الفهم او ما شابه , يمكنك على الفور الذهاب الى المجتمع الخاص بنا في Telegram للمناقشة والتواصل معنا من هنا  


او اذا واجهتك مشكلة في الموقع او تريد اجابة سريعة يمكنك الذهاب الى اخر صفحة في الموقع ستجد صفحة اتصل بنا موجودة يمكنك ارسالة لنا مشكلتك , وسيتم الرد عليها بسرعة جدا ان شاء الله 


ويمكنك الأنضمام الى المجتمع Hidden Lock بالكامل مع جميع قنواته للأستفادة في اخر الأخبار في عالم التقنية وايضا الكتب بالمجان والكورسات والمقالات من خلال الرابط التالي لمجموعة القنوات من     هنا 


يمكنك ايضا متابعتنا في منصات X او Twitter سابقا , لمشاهدة الاخبار والمقالات السريعة والمهمة من  

هنا


وفقط كان معكم sparrow مقدم هذه الشهادة من فريق Hidden Lock 

Tags

إرسال تعليق

0تعليقات

إرسال تعليق (0)

#buttons=(موافق!) #days=(20)

يستخدم موقعنا ملفات تعريف الارتباط لتحسين تجربتك. تاكد الان
Ok, Go it!