القوائم والصفوف
Lists & Tuples
القوائم والصفوف — Lists & Tuples
في Python، عندما تريد تخزين مجموعة من القيم في متغير واحد، يكون اختيارك الأول عادةً بين نوعين: القائمة (list) وهي مرنة قابلة للتعديل، والصف (tuple) وهو ثابت لا يتغير بعد إنشائه. الفرق بينهما ليس مجرد تفصيل تقني — هو يعبّر عن نيتك من البيانات.
إذا قلت “لدي قائمة مهام” فأنت تقصد أن العناصر ستتغير — ستضيف وتحذف وتعدّل. هذا هو دور list. أما إذا قلت “إحداثيات نقطة على الخريطة هي (24.68, 46.72)” فأنت تقصد قيمة ثابتة لا تتغير — هذا هو دور tuple. الاختيار الصحيح يوثّق نيتك ويحمي كودك من تعديلات غير مقصودة.
إنشاء القوائم (Lists)
القائمة تُكتب بأقواس مربعة، وعناصرها تفصلها فاصلة:
الوصول للعناصر وتعديلها
كل عنصر في القائمة له فهرس (index) يبدأ من الصفر. يمكنك أيضاً استخدام فهارس سلبية للوصول من النهاية:
التقطيع (Slicing)
التقطيع يسمح لك بأخذ جزء من القائمة. الصيغة هي [بداية:نهاية] — تشمل البداية ولا تشمل النهاية:
إضافة وحذف العناصر
القائمة توفر عدة طرق للتعديل. كل منها لها مكانها المناسب:
طرق مفيدة للقوائم
الصفوف (Tuples)
الصف يشبه القائمة لكنه ثابت — لا يمكنك إضافة أو حذف أو تعديل عناصره بعد إنشائه. يُكتب بأقواس دائرية:
فك الحزم (Unpacking)
من أجمل مميزات الصفوف في Python هي إمكانية فك الحزمة — توزيع عناصر الصف على متغيرات منفصلة في سطر واحد:
متى تستخدم List ومتى تستخدم Tuple؟
هذا السؤال مهم لأن الإجابة تعبّر عن نيتك في الكود:
استخدم list عندما:
- البيانات ستتغير — ستضيف أو تحذف أو تعدّل
- ترتيب العناصر قد يتغير (مثل قائمة مهام، نتائج بحث)
- عدد العناصر غير محدد مسبقاً
استخدم tuple عندما:
- البيانات ثابتة لا تتغير (إحداثيات، ألوان RGB، أبعاد ثابتة)
- تريد أن يكون من يقرأ كودك واثقاً أن هذه القيم لن تتغير
- تحتاج استخدام المجموعة كمفتاح في
dict(القوائم لا تصلح مفاتيح)
المرور على القوائم
for مع enumerate يعطيك الفهرس والقيمة معاً بدون حساب يدوي:
خلاصة
list وtuple هما أساس التعامل مع مجموعات البيانات في Python. القائمة مرنة ومناسبة للبيانات التي تتغير. الصف ثابت ويعبّر عن وحدة بيانات متماسكة كالإحداثيات أو الأبعاد. فك الحزمة يجعل الكود أقصر وأوضح في نقل المعنى. في الدرس القادم ستتعلم القواميس والمجموعات — وستجد أن ما تعلمته هنا يبني عليه مباشرةً.