الشكل والفرق
list بأقواس مربعة []، وtuple بأقواس عادية ().
القراءة والتقطيع واللف — كلهم نفس الحاجة بالظبط.
الفرق الوحيد: list بتتغيّر، وtuple لأ.
3 2 3 7
قبل أي code — افهم بيحصل إيه
فكرة واحدة في كل خطوة
list بأقواس مربعة []، وtuple بأقواس عادية ().
القراءة والتقطيع واللف — كلهم نفس الحاجة بالظبط.
الفرق الوحيد: list بتتغيّر، وtuple لأ.
3 2 3 7
لو حاولت تعدّل item في tuple، Python هترفض بـ TypeError.
ودي ميزة مش عيب: معناها إن البيانات محمية من التغيير بالغلط.
1. أمان — لو البيانات المفروض ما تتغيّرش (إحداثيات، تاريخ، إعدادات)، tuple بيمنع أي غلطة.
2. أسرع وأخف — بياخد ذاكرة أقل من list.
3. ينفع يبقى key في dictionary — و list لأ.
القاعدة العملية: مجموعة بتتغيّر → list. مجموعة ثابتة → tuple.
Cairo
تقدر توزّع items tuple على variables في سطر واحد.
عدد variables لازم يساوي عدد items بالظبط.
x=3, y=7 2 1
function بترجّع value واحدة بس. بس لو رجّعت tuple، فعليًا بترجّع كذا value مع بعض.
ودي الطريقة العادية في Python — مش حيلة.
min 72 · max 95 · avg 82.3
.items() أصلاً بترجّع tuples. عشان كده بنفكّها في loop كده for k, v in d.items().
و enumerate() بتعمل نفس الحاجة — بتدّيك (الرقم، item).
Abdelrahman → 90 Mona → 78 0 a 1 b
أكتر تركيبة هتشوفها في البيانات الحقيقية: list بتتغيّر جواها rows ثابتة.
list بتكبر وتصغر (بتضيف rows)، لكن row نفسه بيفضل زي ما هو.
والفك في loop بيخلّي code يتقرا زي الجملة: for name, dept, grade in rows.
Abdelrahman IT 90 Mona CS 78 Omar IT 65
محتاج تعدّل حاجة جوّه tuple؟ مينفعش — بس تقدر تحوّله لـ list، تعدّل، وترجّعه tuple تاني.
list(t) → list من tuple · tuple(xs) → tuple من list
خد بالك إن ده مش تعديل — ده إنشاء حاجة جديدة. والأصلي بيفضل زي ما هو.
(3, 7) (10, 7)
الفك مش بس للـ tuple الصريح — Python بتفكّ أي حاجة من اتنين items في سطر واحد:
· k, v = pair
· for k, v in d.items()
· for i, x in enumerate(xs)
· low, high = min_max(nums)
كلهم نفس الفكرة — وده اللي بيخلّي code Python قصير وواضح في نفس الوقت.
a = 1 b = 2 b 2
tuple ثابت يعني مينفعش تبدّل items بتاعته — ما تقدرش تحط item مكان item.
بس لو item نفسه حاجة بتتغيّر (زي list)، تقدر تغيّر جوّاها. tuple لسه ثابت — هو لسه بيشاور على نفس list — بس محتوى list اتغيّر.
الفرق ده بيلخبط ناس كتير، والقاعدة البسيطة: عايز ضمان كامل؟ خلّي اللي جوّه ثابت كمان.
([1, 2, 9], 'fixed') 2
الفكرة دي أسهل ما تتشاف من ما تتقرا
شوف إزاي بنفكّر قبل ما نكتب
نفكّر إزاي؟
نفكّر إزاي؟
return a, b, cنفكّر إزاي؟
نفكّر إزاي؟
enumerate بترجّع (الرقم، item) — ده tupleforنفكّر إزاي؟
نفكّر إزاي؟
ارجعلها وإنت بتحل — مش محتاج تحفظها
شوفه بيشتغل سطر سطر
شوفها هنا بدل ما تضيّع ساعة فيها
فكّر الأول — بعدين اكشف
إيه type t؟
وإيه type ده؟
إيه الناتج؟
إيه الناتج؟
ليه ده بيطلّع TypeError؟
إيه اللي هيحصل؟
إيه الناتج؟
إمتى تختار tuple بدل list؟
اكتب code — ده الجزء اللي بيعلّم فعلاً
اكتب function min_max بتاخد list وترجّع أصغر وأكبر value. استخدمها وافك النتيجة في 2 variables.
اكتب function split_name بتاخد الاسم الكامل وترجّع (الاسم الأول، اسم العيلة). استخدمها وافك النتيجة.
عندك list من rows (اسم، درجة). اطبع اسم صاحب أعلى درجة.
اكتب function stats ترجّع (العدد، المجموع، المتوسط) لـ list أرقام، واعرضهم في تلات سطور.
كل إجابة معاها السبب
إيه الناتج؟
ليه list مينفعش تبقى key في dictionary؟
إيه اللي هيتطبع؟
إيه الفرق الأساسي بين tuple و list؟
إيه اللي هيحصل؟
إيه type t؟
إزاي function ترجّع 2 values؟