الفصل : 3
الجزء : 2
العنوان : تقديم القوائم (INTRODUCING LISTS)
تنظيم قائمة (Organizing a List)
في كثير من الأحيان ، سيتم إنشاء قوائمك بترتيب وقع ، وذلك لأنه لا يمكنك دائمًا التحكم في الترتيب الذي يقدم فيه المستخدمون بياناتهم. على الرغم من أن هذا أمر لا مفر منه في معظم الظروف ، إلا أنك سترغب في كثير من الأحيان في تقديم معلوماتك بترتيب معين. في بعض الأحيان سترغب في الحفاظ على الترتيب الأصلي لقائمتك ، وفي أحيان أخرى سترغب في تغيير الترتيب الأصلي. يوفر Python عددًا من الطرق المختلفة لتنظيم قوائمك ، اعتمادًا على الموقف.
فرز قائمة بشكل دائم باستخدام طريقة sort()
تجعل طريقة sort() في Python من فرز القائمة أمرًا سهلاً نسبيًا. تخيل أن لدينا قائمة بالسيارات ونريد تغيير ترتيب القائمة لتخزينها أبجديًا. لتبسيط المهمة ، لنفترض أن جميع القيم في القائمة بحروف صغيرة:
cars = ['bmw', 'audi', 'toyota', 'subaru']
cars.sort()
print(cars)
تغير طريقة sort() ترتيب القائمة بشكل دائم. أصبحت السيارات الآن مرتبة أبجديًا ، ولا يمكننا أبدًا العودة إلى الترتيب الأصلي:
['audi', 'bmw', 'subaru', 'toyota']
يمكنك أيضًا فرز هذه القائمة بترتيب عكسي أبجديًا عن طريق تمرير الوسيطة reverse=True إلى طريقة sort(). يقوم المثال التالي بفرز قائمة السيارات بترتيب عكسي أبجدي:
cars = ['bmw', 'audi', 'toyota', 'subaru']
cars.sort(reverse=True)
print(cars)
مرة أخرى ، يتم تغيير ترتيب القائمة بشكل دائم:
['toyota', 'subaru', 'bmw', 'audi']
فرز قائمة مؤقتًا باستخدام دالة sorted()
للحفاظ على الترتيب الأصلي للقائمة ولكن عرضها بترتيب مرتب ، يمكنك استخدام الدالة sorted(). تتيح لك الدالة sorted() عرض قائمتك بترتيب معين ، ولكنها لا تؤثر على الترتيب الفعلي للقائمة. دعونا نجرب هذه الدالة على قائمة السيارات.
cars = ['bmw', 'audi', 'toyota', 'subaru']
❶ print("Here is the original list:")
print(cars)
❷ print("\nHere is the sorted list:")
print(sorted(cars))
❸ print("\nHere is the original list again:")
print(cars)
نقوم أولاً بطباعة القائمة بالترتيب الأصلي ❶ ثم أبجديًا ❷. بعد عرض القائمة بالترتيب الجديد ، نظهر أن القائمة لا تزال مخزنة بالترتيب الأصلي ❸:
Here is the original list:
['bmw', 'audi', 'toyota', 'subaru']
Here is the sorted list:
['audi', 'bmw', 'subaru', 'toyota']
❶ Here is the original list again:
['bmw', 'audi', 'toyota', 'subaru']
لاحظ أن القائمة لا تزال موجودة بالترتيب الأصلي ❶ بعد استخدام دالة sorted(). يمكن للدالة sorted() أيضًا قبول وسيطة reverse=True إذا كنت تريد عرض قائمة بترتيب عكسي أبجدي.
ملاحظة
فرز قائمة أبجديًا يكون أكثر تعقيدًا قليلاً عندما لا تكون كل القيم بحروف صغيرة. هناك عدة طرق لتفسير الأحرف الكبيرة عند تحديد ترتيب الفرز ، ويمكن أن يكون تحديد الترتيب الدقيق أكثر تعقيدًا مما نريد التعامل معه في هذا الوقت. ومع ذلك ، فإن معظم أساليب الفرز ستبني بشكل مباشر على ما تعلمته في هذا القسم.
طباعة قائمة بترتيب عكسي
لقلب الترتيب الأصلي للقائمة ، يمكنك استخدام طريقة reverse(). إذا قمنا في الأصل بتخزين قائمة السيارات بترتيب زمني وفقًا لتاريخ امتلاكنا لها ، فيمكننا بسهولة إعادة ترتيب القائمة إلى ترتيب زمني معكوس:
cars = ['bmw', 'audi', 'toyota', 'subaru']
print(cars)
cars.reverse()
print(cars)
لاحظ أن reverse() لا تفرز للوراء أبجديًا ؛ بل إنها ببساطة تعكس ترتيب القائمة:
['bmw', 'audi', 'toyota', 'subaru']
['subaru', 'toyota', 'audi', 'bmw']
تغير طريقة reverse() ترتيب القائمة بشكل دائم ، ولكن يمكنك العودة إلى الترتيب الأصلي في أي وقت عن طريق تطبيق reverse() على نفس القائمة مرة أخرى.
إيجاد طول القائمة
يمكنك العثور بسرعة على طول القائمة باستخدام الدالة len () . تحتوي القائمة في هذا المثال على أربعة عناصر ، لذلك يبلغ طولها 4:
>>> cars = ['bmw', 'audi', 'toyota', 'subaru']
>>> len(cars)
4
ستجد len() مفيدة عندما تحتاج إلى تحديد عدد الكائنات الفضائية التي لا تزال بحاجة إلى الإسقاط في لعبة ، أو تحديد مقدار البيانات التي يتعين عليك إدارتها في تصور ، أو معرفة عدد المستخدمين المسجلين في موقع ويب ، من بين مهام أخرى.
ملاحظة
يعد Python عناصر القائمة بدءًا من واحد ، لذلك لا يجب أن تتعرض لأي أخطاء بنسبة واحد عند تحديد طول القائمة.
جرب بنفسك
**3-8. رؤية العالم**
* فكر في خمسة أماكن على الأقل في العالم ترغب في زيارتها.
* قم بتخزين المواقع في قائمة. تأكد من أن القائمة ليست بترتيب أبجدي.
* اطبع قائمتك بالترتيب الأصلي. لا تقلق بشأن طباعة القائمة بشكل أنيق ؛ فقط اطبعها كقائمة Python خام.
* استخدم sorted() لطباعة قائمتك بترتيب أبجدي دون تعديل القائمة الفعلية.
* أظهر أن قائمتك لا تزال بالترتيب الأصلي عن طريق طباعتها.
* استخدم sorted() لطباعة قائمتك بترتيب عكسي أبجدي دون تغيير ترتيب القائمة الأصلية.
* أظهر أن قائمتك لا تزال بالترتيب الأصلي عن طريق طباعتها مرة أخرى.
* استخدم reverse() لتغيير ترتيب قائمتك. اطبع القائمة لإظهار أن ترتيبها قد تغير.
* استخدم reverse() لتغيير ترتيب قائمتك مرة أخرى. اطبع القائمة لإظهار عودتها إلى ترتيبها الأصلي.
* استخدم sort() لتغيير قائمتك بحيث يتم تخزينها أبجديًا. اطبع القائمة لإظهار أن ترتيبها قد تغير.
* استخدم sort() لتغيير قائمتك بحيث يتم تخزينها بترتيب عكسي أبجدي. اطبع القائمة لإظهار أن ترتيبها قد تغير.
تجنب أخطاء الفهرس عند العمل بالقوائم
هناك نوع واحد من الأخطاء شائع عند العمل بالقوائم لأول مرة. لنفترض أن لديك قائمة بثلاثة عناصر ، وتطلب العنصر الرابع:
motorcycles = ['honda', 'yamaha', 'suzuki']
print(motorcycles[3])
يؤدي هذا المثال إلى خطأ في الفهرس:
Traceback (most recent call last):
File "motorcycles.py", line 2, in <module>
print(motorcycles[3])
~~~~~~~~~~~^^^
IndexError: list index out of range
يحاول Python منحك العنصر الموجود في الفهرس 3. ولكن عند البحث في القائمة ، لا يوجد عنصر في motorcycles له فهرس 3. وبسبب طبيعة الترقيم خارج النطاق عند الفهرسة في القوائم ، يكون هذا الخطأ نموذجيًا. يعتقد الناس أن العنصر الثالث هو العنصر رقم 3 ، لأنهم يبدأون العد من 1. ولكن في Python العنصر الثالث هو الرقم 2 ، لأنه يبدأ بالفهرسة عند 0.
يعني خطأ الفهرس أن Python لا يمكنه العثور على عنصر في الفهرس الذي طلبته. إذا حدث خطأ في الفهرس في برنامجك ، فحاول تعديل الفهرس الذي تطلبه بواحد. ثم قم بتشغيل البرنامج مرة أخرى لمعرفة ما إذا كانت النتائج صحيحة.
ضع في اعتبارك أنه كلما أردت الوصول إلى العنصر الأخير في القائمة ، يجب عليك استخدام الفهرس -1. سيعمل هذا دائمًا ، حتى إذا تغير حجم قائمتك منذ آخر مرة قمت فيها بالوصول إليها:
motorcycles = ['honda', 'yamaha', 'suzuki']
print(motorcycles[-1])
يعيد الفهرس -1 دائمًا العنصر الأخير في القائمة ، وفي هذه الحالة القيمة 'suzuki':
suzuki
المرة الوحيدة التي سيؤدي فيها هذا النهج إلى خطأ هي عندما تطلب العنصر الأخير من قائمة فارغة:
python
motorcycles = []
print(motorcycles[-1])
لا يوجد عناصر في motorcycles ، لذلك يعيد Python خطأ فهرس آخر:
Traceback (most recent call last):
File "motorcyles.py", line 3, in <module>
print(motorcycles[-1])
~~~~~~~~~~~^^^^
IndexError: list index out of range
إذا حدث خطأ في الفهرس ولا يمكنك معرفة كيفية حلها ، فحاول طباعة قائمتك أو مجرد طباعة طول قائمتك. قد تبدو قائمتك مختلفة تمامًا عما كنت تعتقد ، خاصة إذا تمت إدارتها ديناميكيًا بواسطة برنامجك. إن رؤية القائمة الفعلية ، أو عدد العناصر المحدد في قائمتك ، يمكن أن يساعدك في حل هذه الأخطاء المنطقية.
جرب بنفسك
**3-11. خطأ مقصود:** إذا لم تتلق بعد خطأ فهرس في أحد برامجك ، فحاول التسبب بحدوثه. قم بتغيير فهرس في أحد برامجك لإنتاج خطأ فهرس. تأكد من تصحيح الخطأ قبل إغلاق البرنامج.
الملخص
في هذا الفصل ، تعلمت ماهية القوائم وكيفية العمل بالعناصر الفردية في القائمة. لقد تعلمت كيفية تعريف قائمة وكيفية إضافة العناصر وإزالتها. تعلمت كيفية فرز القوائم بشكل دائم ومؤقت لأغراض العرض. كما تعلمت كيفية معرفة طول القائمة وكيفية تجنب أخطاء الفهرس عند العمل بالقوائم.
في الفصل 4 ، ستتعلم كيفية العمل مع العناصر في القائمة بشكل أكثر فعالية. من خلال التكرار خلال كل عنصر في القائمة باستخدام عدد قليل من أسطر الكود ، ستتمكن من العمل بكفاءة ، حتى عندما تحتوي قائمتك على آلاف أو ملايين من العناصر.
النهاية
نكون هنا انتهينا من الفصل 3 من منهج تعلم Python من كتاب python crash course بالعربية
واذا واجهتك اي مشكلة في الفهم او ما شابه , يمكنك على الفور الذهاب الى المجتمع الخاص بنا في Telegram للمناقشة والتواصل معنا من هنا
او اذا واجهتك مشكلة في الموقع او تريد اجابة سريعة يمكنك الذهاب الى اخر صفحة في الموقع ستجد صفحة اتصل بنا موجودة يمكنك ارسالة لنا مشكلتك , وسيتم الرد عليها بسرعة جدا ان شاء الله
ويمكنك الأنضمام الى المجتمع Hidden Lock بالكامل مع جميع قنواته للأستفادة في اخر الأخبار في عالم التقنية وايضا الكتب بالمجان والكورسات والمقالات من خلال الرابط التالي لمجموعة القنوات من هنا
يمكنك ايضا متابعتنا في منصات X او Twitter سابقا , لمشاهدة الاخبار والمقالات السريعة والمهمة من
وفقط كان معكم sparrow مقدم هذه الشهادة من فريق Hidden Lock