مقدمة إلى القوائم المتداخلة ثنائية الأبعاد
تمرين: لديك قائمة من النصوص، وهدفك طباعة الحرف الأول من النص الثاني في القائمة. مثلًا إذا كانت القائمة:
strings = ["abc", "def", "ghi"]
فيجب أن تطبع d.
How can you access the second string in the list?
Then how do you access a particular letter in a string?
تذكر أن the indexing of lists and strings are very similar.
ربما حللت التمرين السابق هكذا:
string = strings[1]
print(string[0])
هناك طريقة أقصر. التعبير strings[1] تعبير عادي مثل أي تعبير آخر، ويمكن استخدام الفهرسة [0] مع أي تعبير، وليس مع المتغيرات فقط. لذلك تستطيع الاستغناء عن المتغير الوسيط وكتابة:
print(strings[1][0]) تأمل هذه الصيغة جيدًا. قد تبدو جديدة، لكنها مجرد الفهرسة المعتادة مطبقة مرتين. تتبع التعبير خطوة بخطوة لترى كيف يقسمه بايثون إلى أجزاء أصغر.
باستخدام الصيغة نفسها، عدّل البرنامج ليطبع الحرف الأخير من النص قبل الأخير في القائمة strings.
يجب أن تستخدم تعبيرًا واحدًا مثل المثال السابق، ولا يُسمح باستخدام len. ويجب أن يعمل الحل لأي قائمة غير فارغة من النصوص. في المثال السابق يجب أن يطبع f.
This is very similar to the previous exercise.
Do you remember how to access the last position of a list (without using
len)?Similarly how do you access the second-to-last position in a list?
If you can't remember, you can Google it!
Indexing works similarly on lists and strings.
Do you get an
index out of rangeerror? Is it for a string, or a list? Why?Make sure you are not confusing the order of the list index and the string index.
Use a step-by-step expression trace if you're having trouble.
أحسنت!
تطبيق الفهرسة مرتين يصبح أقوى عندما لا تكون لدينا قائمة نصوص فقط، وإنما قائمة تحتوي على قوائم. ما الذي سيطبعه البرنامج التالي؟
strings = [['hello', 'there'], ['how', 'are', 'you']]
print(strings[1][0])
كما رأيت، يسمح بايثون بوجود قوائم متداخلة: قائمة يكون كل عنصر فيها قائمة أخرى، ونسمّي هذه القوائم الداخلية قوائم فرعية (sublists).
ويمكننا استخدام الفهرسة أكثر من مرتين. اكتب برنامجًا يأخذ قائمة متداخلة باسم strings مثل السابقة، ويطبع الحرف الأول من النص الثالث داخل القائمة الفرعية الثانية.
استخدم تعبيرًا واحدًا فقط كما في التمرين السابق. بالنسبة إلى القائمة الموجودة في المثال يجب أن يطبع البرنامج y.
This is very similar to the previous exercises.
How many times do you need to use subscripting?
First you need to access a sublist.
Then a string in that sublist.
Then a letter in that string.
Use a step-by-step expression trace if you're having trouble.
ممتاز! أصبحت الآن تفهم الفهرسة المتداخلة جيدًا.
وما زالت كل دوال وأساليب القوائم التي تعلمناها تعمل مع القوائم الداخلية. مثلًا يمكننا إضافة كلمة جديدة إلى آخر قائمة فرعية في strings بعد 'you' هكذا:
strings[1].append("today?")
فـstrings[1] قائمة عادية مثل أي قائمة أخرى.
في الدرس التالي ستتعلم كيف تمر تكراريًا على القوائم المتداخلة.