مقدمة إلى القوائم (Lists)
حان وقت التعرف على نوع قوي جديد من القيم يسمى القوائم(Lists). إليك مثالًا:
words = ['This', 'is', 'a', 'list']
for word in words:
print(word)
القائمة هي تسلسل، أي مجموعة مرتبة يمكن أن تحتوي على أي عدد من القيم. وتسمى القيم الموجودة داخلها غالبًا عناصر(Elements).
يمكن أن تكون العناصر أي شيء: أعدادًا، نصوصًا، قيمًا منطقية، وحتى قوائم أخرى. ويمكن أيضًا أن تجمع القائمة عناصر من أنواع مختلفة.
لإنشاء قائمة مباشرة كما في المثال السابق:
- اكتب قوسين مربعين:
[]. - إذا لم تكن تريد قائمة فارغة، فاكتب التعبيرات التي ستكون عناصر داخل القوسين.
- ضع فاصلة
,بين العناصر للفصل بينها.
إليك مثالًا آخر لإنشاء قائمة:
x = 1
things = ['Hello', x, x + 3]
print(things)
كما رأيت، القوائم قابلة للتكرار عليها(Iterable)، أي يمكنك المرور على عناصرها باستخدام حلقة for. إليك برنامجًا يجمع كل الأعداد الموجودة داخل قائمة:
numbers = [3, 1, 4, 1, 5, 9]
total = 0
for number in numbers:
total += number
print(total)
عدّل البرنامج الآن بحيث يستطيع جمع قائمة من النصوص بدلًا من الأعداد. مثلًا، إذا كانت:
words = ['This', 'is', 'a', 'list']
فيجب أن يطبع:
Thisisalist
هذا يشبه كثيرًا تمارين بناء النصوص محرفًا بعد محرف.
الحل يشبه جدًا البرنامج الذي يجمع الأعداد.
ماذا يحدث لو شغّلت ذلك البرنامج على قائمة من النصوص؟
المشكلة هي القيمة 0؛ لا يمكنك جمع 0 مع نص لأن الأعداد والنصوص نوعان غير متوافقين.
هل يوجد في النصوص ما يشبه 0؟ قيمة ابتدائية فارغة مثلًا؟
ممتاز!
يمكنك المتابعة إلى الدرس التالي الآن إذا أردت.
أما التحدي الإضافي الاختياري فهو توسيع البرنامج بحيث يضع نصًا فاصلًا بين كل كلمتين. فإذا كانت القيم:
words = ['This', 'is', 'a', 'list']
separator = ' - '
فيجب أن يكون الناتج:
This - is - a - list
هذا يشبه التمرين السابق. يمكنك البدء من حلك هناك.
هذا التمرين لا يحتاج إلى حيلة خاصة، وحله النهائي يمكن أن يكون بسيطًا. الصعوبة في اختيار الطريقة الصحيحة.
في كل دورة، بجانب كلمة من القائمة، تحتاج أيضًا إلى إضافة الفاصل.
لكن لا تريد إضافة الفاصل بعد آخر كلمة.
لا توجد عملية «طرح» للنصوص؛ لا يمكنك إضافة الفاصل الأخير ثم حذفه.
ارجع خطوة: الناتج النهائي يحتوي كل الكلمات و
n - 1فاصلًا، حيثnعدد الكلمات.إذًا أضف فاصلًا في كل دورة ما عدا دورة واحدة.
يمكنك تخطي إضافة الفاصل في دورة محددة باستخدام جملة
if.ستتعلم لاحقًا طريقة لمعرفة أنك في آخر دورة أثناء المرور على قائمة، لكنك لا تملكها الآن.
لكن الدورة التي تتخطى فيها الفاصل لا يجب أن تكون الأخيرة.
يمكنك كتابة برنامج يعرف إن كان في أول دورة للحلقة.
استخدم متغيرًا منطقيًا لتتبع ذلك؛ لا تحتاج إلى أعداد أو عوامل مقارنة.
رأينا برامج تستخدم فكرة مشابهة هنا.
إذا تخطيت الفاصل في الدورة الأولى فقط، فسيصبح لديك
n - 1فاصلًا. بقي أن تضعها في المواضع الصحيحة.انسَ الحلقة للحظة. يجب أن تضيف إلى النص بهذا الترتيب: الكلمة الأولى، الفاصل، الثانية، الفاصل، الثالثة، وهكذا.
إذًا في الدورة الأولى أضف الكلمة الأولى فقط. في الثانية أضف الفاصل ثم الكلمة الثانية. في الثالثة أضف الفاصل ثم الكلمة الثالثة، وهكذا.
داخل الحلقة أضف الفاصل أولًا، ثم الكلمة.
تخطَّ الفاصل في الدورة الأولى بالاعتماد على متغير منطقي.
أنشئ المتغير المنطقي قبل الحلقة، ثم غيّر قيمته داخلها.
لا تغيّر قيمته إلا بعد فحصه داخل الحلقة، وإلا لن تستطيع تخطي الدورة الأولى.
تهانينا! كان هذا التمرين صعبًا فعلًا. أحد الحلول الممكنة:
words = ['This', 'is', 'a', 'list']
separator = ' - '
total = ''
not_first = False
for word in words:
if not_first:
total += separator
total += word
not_first = True
print(total)