ليه مش variables منفصلة؟
لو عندك 3 درجات، ممكن تعمل g1 و g2 و g3. تمام.
بس لو عندك 100 طالب؟ هتكتب 100 variable؟ وبعدين تجمعهم إزاي؟
list بتحل ده: اسم واحد، وكل values جوّاه مرتّبة، وتقدر تلف عليهم بـ loop واحدة.
[85, 90, 78, 92] 4
قبل أي code — افهم بيحصل إيه
فكرة واحدة في كل خطوة
لو عندك 3 درجات، ممكن تعمل g1 و g2 و g3. تمام.
بس لو عندك 100 طالب؟ هتكتب 100 variable؟ وبعدين تجمعهم إزاي؟
list بتحل ده: اسم واحد، وكل values جوّاه مرتّبة، وتقدر تلف عليهم بـ loop واحدة.
[85, 90, 78, 92] 4
زي strings بالظبط — indexing من صفر، والسالب بيعد من الآخر.
والفرق المهم عن strings: تقدر تغيّر item في list.
36.5 38.1 [36.5, 39.0, 38.1]
.append(x) بتضيف في الآخر.insert(i, x) بتضيف في مكان محدد.pop() بتشيل الأخير وترجّعه · .pop(i) بتشيل اللي في المكان i.remove(x) بتشيل أول ظهور لـ value x
لاحظ: functions دي بتغيّر list نفسها ومش بترجّع list جديدة (عكس string methods تمامًا).
['Sara', 'Abdelrahman', 'Mona', 'Omar'] Omar ← ['Sara', 'Abdelrahman', 'Mona']
list + loop = أقوى تركيبة هتستخدمها.
وفيه functions جاهزة بتوفّر عليك loop أصلاً:sum() المجموع · len() العدد · max() الأكبر · min() الأصغر
85 90 78 92 Sum: 345 Max: 92 Average: 86.25
.sort() بترتّب list نفسها ومش بترجّع حاجة.sorted() بترجّع list جديدة مرتّبة والأصلية بتفضل زي ما هي.
الفرق ده بيوقّع ناس كتير. لو كتبت x = x.sort() هتلاقي x بقت None.
[1, 2, 3] [3, 1, 2] [3, 2, 1]
نفس تقطيع strings بالظبط. و in بتدوّر جوّه list.
[20, 30, 40] [10, 20] True 2
.split() بتحوّل string لـ list · .join() بتحوّل list لـ string.
دي أكتر حاجة هتستخدمها لما تتعامل مع بيانات جاية من file.
['Abdelrahman', 'Mona', 'Omar'] Abdelrahman, Mona, Omar, Sara
item جوّه list ممكن يكون list تانية. وكده بقى عندك جدول: rows وأعمدة.
table[1] بتدّيك row التاني كله، و table[1][0] بتدّيك أول خانة في row ده.
اقراها من الشمال لليمين: الأول اختار row، بعدين اختار الخانة.
['Abdelrahman', 90] Mona Abdelrahman ← 90 Mona ← 78
b = a مش بيعمل list جديدة. ده بيدي اسم تاني لنفس list.
يعني لو ضفت في b، هتلاقي a اتغيّرت كمان — لأنهم نفس الحاجة أصلاً.
عايز نسخة مستقلة فعلاً؟ b = a.copy().
ليه ده مهم؟ لأنه بيسبّب باجات بتاخد ساعات: بتعدّل في حتة وبيتغيّر في حتة تانية إنت مش شايفها.
a = [1, 2, 99] copy= [1, 2, 55]
list فيها functions جاهزة بتوفّر عليك loops كاملة:
.count(x) item ده اتكرر كام مرة · .index(x) مكان أول ظهور ليهx in xs هل موجود أصلاً · .extend(ys) ضمّ list تانية
.index() بتطلّع error لو item مش موجود — اتأكد بـ in الأول.
3 3 AI not found
الفكرة دي أسهل ما تتشاف من ما تتقرا
شوف إزاي بنفكّر قبل ما نكتب
نفكّر إزاي؟
[].append()max.نفكّر إزاي؟
نفكّر إزاي؟
sum و len و max و minنفكّر إزاي؟
.sort() بتغيّر list نفسها وبترجّع Nonesorted() بترجّع نسخة جديدة مرتّبةsorted()نفكّر إزاي؟
inنفكّر إزاي؟
b = a معناها اسمين لنفس list.copy() بتعمل list جديدة بالفعلارجعلها وإنت بتحل — مش محتاج تحفظها
شوفه بيشتغل سطر سطر
شوفها هنا بدل ما تضيّع ساعة فيها
فكّر الأول — بعدين اكشف
إيه الناتج؟
إيه الناتج؟
إيه value y؟
إيه طول list؟
وهنا؟
إيه اللي هيتطبع؟
ليه ده بيطلّع IndexError؟
إيه الناتج؟
اكتب code — ده الجزء اللي بيعلّم فعلاً
عندك list أرقام. اعمل list جديدة فيها الأرقام الزوجية بس، ورتّبها تنازليًا.
عندك list أسماء. اطبعها مرتّبة أبجديًا، وبعدين اطبع أول اسم وآخر اسم.
عندك درجات. اطبع كام طالب فوق المتوسط.
ادمج اتنين lists في list واحدة من غير تكرار، ورتّبها.
كل إجابة معاها السبب
إيه طول list في الآخر؟
إيه اللي هيتطبع؟
ليه ده بيطلّع IndexError؟
إيه اللي هيتطبع؟
إيه value y؟
إيه ناتج التقطيع؟
إيه الفرق بين list و string؟