📚 أوجه الاختلاف بين الصفوف والقوائم
المفاهيم الأساسية
الصف (Tuple): تركيب بيانات غير قابل للتغيير (ثابت). لا يمكن إضافة أو إزالة أو تعديل عناصره بعد الإنشاء.
خريطة المفاهيم
```markmap
هياكل البيانات
هياكل البيانات غير البسيطة (Non-primitive)
هياكل خطية (Linear)
#### تعريف القائمة
- صيغة: List_Name=[item1, item2,...,itemN]
- عناصر القائمة
- متغير يمثل اسم القائمة
#### فهرسة القوائم (List Indexing)
- الوصول للعناصر: اسم_القائمة[رقم_الفهرس]
- الفهرس يبدأ من الصفر (0)
##### الفهرسة الموجبة
- fruits[0] → العنصر الأول ("apple")
- fruits[2] → العنصر الثالث ("banana")
##### الفهرسة السالبة
- fruits[-1] → العنصر الأخير ("banana")
- fruits[-2] → العنصر الثاني قبل الأخير ("orange")
#### التكرار على القوائم
#### استخدام الدوال مع القوائم
##### دوال تعيد قيمة (لا تغير القائمة)
###### دالة len()
- مثال: `gradesItems=len(grades)`
###### دالة sum()
- مثال: `myGrades=sum(grades)`
###### دالة max()
- الوظيفة: تعرض أكبر عنصر في القائمة.
- مثال: `maxGrade=max(grades)`
###### دالة min()
- الوظيفة: تعرض أصغر عنصر في القائمة.
- مثال: `minGrade=min(grades)`
##### دوال تغير القائمة (دوال مدمجة)
###### listName.append(x)
- الوظيفة: تضيف العنصر x لنهاية القائمة.
###### listName.remove(x)
- الوظيفة: تزيل العنصر x من القائمة.
###### listName.count(x)
- الوظيفة: تحسب عدد مرات ظهور x داخل القائمة.
###### listName.sort()
- الوظيفة: ترتب عناصر القائمة تصاعدياً.
###### listName.reverse()
- الوظيفة: ترتب عناصر القائمة عكسياً.
###### listName.clear()
- الوظيفة: تزيل كافة العناصر من القائمة.
- Tuple
#### تعريف الصف (Tuple)
- صيغة: tuple_name=(item1,item2,...,itemN)
- عناصر الصف
- متغير يمثل اسم الصف
#### فهرسة الصفوف (Tuples Indexing)
- الوصول للعناصر: اسم_الصف[رقم_الفهرس]
- الفهرس يبدأ من الصفر (0)
##### الفهرسة الموجبة
- fruits[1] → العنصر الثاني ("orange")
##### الفهرسة السالبة
- fruits[-1] → العنصر الأخير ("banana")
- fruits[-2] → العنصر الثاني قبل الأخير ("orange")
#### التكرار على الصفوف
#### خاصية عدم القابلية للتعديل (Immutability)
- محاولة تعديل عنصر تسبب خطأ: `TypeError: 'tuple' object does not support item assignment`
هياكل غير خطية (Non-linear)
```
نقاط مهمة
* محاولة تعديل عنصر داخل صف (Tuple) ستتسبب في خطأ برمجي من نوع `TypeError`.
* الخطأ النموذجي: `'tuple' object does not support item assignment`.
* الفرق الرئيسي بين الصف والقائمة هو قابلية التعديل.
المقارنة
| الصف (Tuple) | القائمة (List) |
| :--- | :--- |
| توجد القيم داخل أقواس دائرية `( )`. | توجد القيم داخل أقواس مربعة `[ ]`. |
| القيم غير قابلة للتعديل (ثابتة). | القيم قابلة للتعديل (متغيرة). |