📚 صفوف البيانات (Tuples)
المفاهيم الأساسية
الصف (Tuple): هيكل بيانات خطي في بايثون يضم عدداً مرتباً من البيانات، ويمكن أن يُخزن داخلها أي نوع من القيم. وهو هيكل بيانات غير قابل للتعديل (لا يمكن تغيير قيمه بعد الإنشاء).
فهرسة الصفوف (Tuples indexing): تتم بالضبط كما في القوائم، حيث يمكن الوصول إلى كل عنصر في الصف بكتابة اسم الصف والرقم التسلسلي (الفهرس) للعنصر بين قوسين مربعين.
خريطة المفاهيم
```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)
هياكل غير خطية (Non-linear)
```
نقاط مهمة
* الصف غير قابل للتعديل، مما يجعله مناسباً للحالات التي تحتاج فيها للوصول إلى البيانات دون تغييرها (مثل رقم المعرف أو البريد الإلكتروني)، مما يجعل البيانات أكثر أماناً.
* يُكتب الصف على شكل قائمة من القيم بينها فواصل وداخل أقواس دائرية `()`.
* مثال إنشاء صف:
PersonalInfo = ("Khaled", "khaled@edu.sa", 1234)
* مثال فهرسة صف:
fruitsTuple=("apple", "orange", "banana")
للوصول إلى `"orange"` نستخدم: `fruitsTuple[1]`.