دوال وأساليب القوائم الأساسية
لنراجع طرق التعامل مع القوائم. افترض أن لدينا nums = [1, 2, 3]. يمكنك استخدام:
append: لإضافة عنصر إلى نهاية القائمة.nums.append(4)تغيّر القائمة إلى[1, 2, 3, 4].len: تُرجع عدد العناصر.len(nums)تساوي3.range: التعبيرrange(n)كائن يشبه قائمة الأعداد من0إلىn - 1، أي يحتوي علىnأعداد. ولذلكrange(len(nums))تشبه[0, 1, 2]، وهي فهارس جميع عناصرnums.[](الفهرسة): للوصول إلى قيمة عند فهرس معين.nums[0]تساوي1وnums[1]تساوي2وnums[2]تساوي3.+: لدمج القوائم.nums + [4, 5]تنتج[1, 2, 3, 4, 5].
لاحظ أن nums.append(4) تعدّل القائمة الموجودة نفسها، بينما nums + [4, 5] لا تعدّل nums. ويمكن الاحتفاظ بنتيجة nums + [4, 5] بإسنادها إلى متغير جديد. شغّل الكود التالي:
nums = [1, 2, 3]
new_nums = nums + [4, 5]
print(new_nums)
print(nums)
nums.append(4)
print(nums)
كما ترى، العامل + لا يعدّل nums نفسها، بينما append تفعل ذلك.
إليك فكرة جديدة: الإسناد عبر الفهرس (Subscript assignment). يمكنك تعيين قيمة جديدة في فهرس معين، لتحل محل القيمة السابقة، بالصيغة:
some_list[index] = new_value
سيظهر خطأ إذا لم يكن index فهرسًا صالحًا داخل some_list. شغّل المثال التالي:
nums = [1, 2, 3]
nums[1] = 9
print(nums)
index: تُرجع أول فهرس تظهر عنده قيمة معينة داخل القائمة، بالصيغة:
some_list.index(value) ويظهر خطأ إذا لم تكن القيمة موجودة. جرّب هذا السطر في الطرفية:
[7, 8, 9, 8].index(8)
pop: تحذف عنصرًا عند فهرس محدد وتُرجع ذلك العنصر، بالصيغة:
some_list.pop(index)
إذا استدعيتها من دون وسيط، أي some_list.pop()، فإنها تحذف العنصر الأخير وتُرجعه. ويظهر خطأ إذا لم يكن index فهرسًا صالحًا في القائمة. شغّل المثال:
nums = [1, 2, 3]
print(nums.pop(1))
print(nums)
remove: تحذف أول ظهور لقيمة معينة، بالصيغة:
some_list.remove(value) ويظهر خطأ إذا لم تكن القيمة موجودة في القائمة. شغّل المثال:
nums = [1, 2, 3]
nums.remove(1)
print(nums)
ستحل الآن أربعة تمارين قصيرة على هذه الأفكار. في القائمة التالية أسطر صحيحة وأخرى خاطئة مختلطة معًا. لكل تمرين قادم حل يتضمن سطرًا واحدًا فقط من هذه القائمة، ومهمتك اختيار السطر الصحيح:
x[len(x)] = x[0] x[len(x) - 1] = x[0] x[len(x) + 1] = x[0] x + x[0] [x] + x[0] x + [x[0]] [x] + [x[0]] x + x.pop(0) [x] + x.pop(0) x + [x.pop(0)] [x] + [x.pop(0)] x.pop(x.append(0)) x.append(x.pop(0)) x.append(x[0]) x.append(x.index(0)) x.index(x.append(0)) x.pop(x.index(0)) x.index(x.pop(0)) إليك برنامجًا غير مكتمل:
x = ['a', 'b', 'c']
(insert_one_line_from_above)
print(x)
استبدل السطر الأوسط بسطر واحد من القائمة السابقة. يجب أن يعدّل البرنامج النهائي x بنقل العنصر الأول إلى النهاية، بحيث يطبع ['b', 'c', 'a'].
Your solution should have exactly three statements:
x = ['a', 'b', 'c'], then one line copied exactly from the list (no additions), andprint(x).Moving the first element to the end requires two things.
Removing the first element...
and adding it to the end.
Which functions/methods can you use for this?
تذكر أن the first index is 0.
أحسنت. في التمرين التالي ابدأ من البرنامج غير المكتمل نفسه:
x = ['a', 'b', 'c']
(insert_one_line_from_above)
print(x)
اختر سطرًا من القائمة السابقة يستبدل العنصر الأخير في x بالعنصر الأول، بحيث يطبع البرنامج ['a', 'b', 'a'].
Your solution should have exactly three statements:
x = ['a', 'b', 'c'], then one line copied exactly from the list (no additions), andprint(x).You need to get the value of the first element in
x...and assign that value to the last position in
x.How do you assign a value at a specific index in the list?
What are the indices of the first and last last elements in
x?
ممتاز!
ربما لاحظت أن الوصول إلى العنصر الأخير باستخدام x[len(x) - 1] طويل قليلًا. يمكنك كتابة الشيء نفسه بصورة أبسط: x[-1]. وبالمثل يمكن كتابة العنصر قبل الأخير x[len(x) - 2] على صورة x[-2]، وهكذا. يسمح بايثون بالعد من نهاية القائمة إلى الخلف، ويبدأ العنصر الأخير بالفهرس -1.
| الفهرس | العنصر الأول | العنصر الثاني | العنصر الثالث | ... | قبل الأخير | الأخير |
|---|---|---|---|---|---|---|
| من البداية | 0 | 1 | 2 | ... | len(x) - 2 | len(x) - 1 |
| من النهاية | -len(x) | -len(x) + 1 | -len(x) + 2 | ... | -2 | -1 |
التمرين التالي مختلف قليلًا: لن تعدّل القائمة x، بل ستنشئ قائمة جديدة اسمها y:
x = ['a', 'b', 'c']
y = (insert_one_line_from_above)
print(y)
يجب أن تكون y مثل x مع تكرار العنصر الأول في النهاية. لذلك يجب أن يطبع البرنامج ['a', 'b', 'c', 'a'].
Your solution should have exactly three statements:
x = ['a', 'b', 'c'],y =followed by one line copied exactly from the list, andprint(y).Which lines of code create a new list rather than modifying?
xis a list. Each element ofxis a string.You can add lists together, you can add strings together, but you can't add a string and a list.
How do you make a list containing one element?
عمل رائع. والآن التمرين الأخير:
x = [1, 2, 0, 3]
x.remove(0)
print(x)
استبدل السطر الأوسط x.remove(0) بسطر من القائمة السابقة يؤدي النتيجة نفسها.
Your solution should have exactly three statements:
x = [1, 2, 0, 3], one line copied exactly from the list (no additions), andprint(x).What does
x.remove(0)do?It removes an element!
Which function/method can also remove an element?
The other function/method can't simply be told 'remove 0', it needs a different kind of information.
Specifically, it needs to be told where 0 is.
Which function/method provides that kind of information?
عمل رائع!