## Tuples في Python
الـ Tuple هي مثل القائمة لكنها **غير قابلة للتعديل (Immutable)** بعد إنشائها.
### إنشاء Tuple: ```python empty = () single = (1,) # الفاصلة ضرورية للعنصر الواحد! point = (10, 20) mixed = (1, "نص", 3.14) ```
### الفرق بين List و Tuple: | | List | Tuple | |---|---|---| | الرمز | `[]` | `()` | | القابلية للتعديل | ✅ قابلة | ❌ غير قابلة | | السرعة | أبطأ | أسرع | | الاستخدام | بيانات تتغير | بيانات ثابتة |
### متى تستخدم Tuple؟ - إحداثيات نقطة (x, y) - أيام الأسبوع (لا تتغير) - مفاتيح القواميس - إرجاع قيم متعددة من دالة
| 1 | # إنشاء Tuple |
| 2 | point = (3, 7) |
| 3 | colors = ("أحمر", "أخضر", "أزرق") |
| 4 | |
| 5 | # الوصول (مثل القائمة) |
| 6 | print(point[0]) # 3 |
| 7 | print(colors[-1]) # أزرق |
| 8 | |
| 9 | # التقطيع |
| 10 | print(colors[0:2]) # ('أحمر', 'أخضر') |
| 11 | |
| 12 | # Unpacking |
| 13 | x, y = point |
| 14 | print(f"x={x}, y={y}") |
مثال 1: Tuple Unpacking
| 1 | # فك التعبئة |
| 2 | person = ("أحمد", 28, "مهندس") |
| 3 | name, age, job = person |
| 4 | print(f"الاسم: {name}, العمر: {age}, الوظيفة: {job}") |
| 5 | |
| 6 | # في دالة تُرجع قيماً متعددة |
| 7 | def get_min_max(numbers): |
| 8 | return min(numbers), max(numbers) |
| 9 | |
| 10 | minimum, maximum = get_min_max([5, 2, 8, 1, 9]) |
| 11 | print(f"الأصغر: {minimum}, الأكبر: {maximum}") |
مثال 2: Tuple مقابل List
| 1 | # List - قابلة للتعديل |
| 2 | lst = [1, 2, 3] |
| 3 | lst[0] = 99 # ✅ يعمل |
| 4 | lst.append(4) # ✅ يعمل |
| 5 | |
| 6 | # Tuple - غير قابلة للتعديل |
| 7 | tpl = (1, 2, 3) |
| 8 | # tpl[0] = 99 # ❌ خطأ! |
| 9 | |
| 10 | # لكن يمكن تحويلها |
| 11 | lst_from_tpl = list(tpl) |
| 12 | lst_from_tpl[0] = 99 |
| 13 | new_tpl = tuple(lst_from_tpl) |
| 14 | print(new_tpl) # (99, 2, 3) |