طيب يا جماعة السلام عليكم بنكمل ان شاء الله ال
chapter الخاص بال files و exception handling بناخد
فقط سؤالين او تلاتة انحلهم على ال files و بعدين
نبدأ في موضوع جديدشوفنا احنا التعامل مع ال fans
بشكل عام القراءة و الكتابة شوفنا معالجة الأخطاء
باستخدام ال try except شوفنا كيف ان ال try except
ان لو حصل خطأ في اي سطر بروح ينفذ ال code الموجود
في ال except اللي هو المفروض يحط فيه code لمعالجة
الخطأو بعد لو تم معالجة الخطأ بيكمل تنفيذ البرنامج
الفكرة في ال try except انه مايصيرش اتلقاش في
البرنامج يوقف فجأة من غير ما اعرف ايش المشكلة الصح
ان البرنامج يستمر في العمل و تطلعه لسه لا يتبلغ
نقش الخطأ اللي موجود يعني الواحد حتى في حياته لما
يتعامل مع اي برنامج مش منطق انه فجأة البرنامج يطفي
الواحد بتضايق لكن لو البرنامج حصل فيه خطأ انا
مقدرش امنع الأخطاءيعني في أخطاء مالهاش علاقة في
البرنامج جد ما إلها علاقة في البيئة الخارجية، يعني
مثلا البرنامج بدي قرأ ملف و الملف مش موجود، تمام؟
هذا مش مشكلة في ال code، المشكلة أن الملف اللي
موجود برا ال code مش موجودالبرنامج مش شغال لكن ال
input اللي دخل ال user غلط صح ولا يعني شفنا المرة
الماضية ان المطلوب يدخل رقم و يدخل نص هذا مش خطأ
في البرنامج خطأ في ال input فانا مقدرش امنع
الأخطاء لكن انا لازم احط قالية لمعالج الخطأ لو حصل
وهذا اللي احنا بنعمل في exception handling ان لو
حصل خطأ بنفذ ال code في ال except اللي غالبا بحط
فيه مثلا طباعة لرسالة بتوضح ايش الخطأ اللي صار و
بعدين بكمل تنفيذ البرنامجطيب اليوم هنحل سؤالين على
ال files طيب
بدنا write a program that will count the number of
characters, words and lines in a fileيعني بنعمل
برنامج نعطيه ملف و يعدل ليه كم عدد الأسطر و
الكلمات و الحروف الموجودة في الملف طبعا بيقول لي
words are separated by a whitespace character your
program should prompt the user to enter a file
name يعني بنعمل برنامج يطلب من المستخدم يدخل اسم
الملف أو مسار الملف و بعد ذلك البرنامج بيطبع ليه
البلف فيه كام كلمة كام حرف و كام سطر تمام؟
أول حاجة خلّينا نشوف ملف من الملفات لأن
هذا مثلا ملف في أسماء تمام من أن أعد كم سطر فيه و
كم كلمة و كم حرف
طيب أول حاجة بيقولي أطلب من المستخدم يدخل اسم مسار
الملف طبعا يعني بدنا نعمل أول حاجة نعمل متغير اسمه
file path يساوي input enter
file path ماقدرش أخلي إيه إسم الملف بس لازم مساركم
مسارأه لازم المسار لكن بعد هيك لو الملف لو الملف
موجود مع هدولة هنا في ال project بعتله اسم الملف
بقراه طبعا لكن انا لو الملف موجود عندى في ال C او
ال D لازم اعطله المسار كامل عشان يعرف هو موجود
طبعا لان في ال branch الفعلي زي ما هنشوف جدام لما
ناخد ال graphical user interface ان انا ممكن اعرض
للمستخدم شاشة فتح الملفعارفينها اللي بيختار فيها
مصار الملف و .. تمام؟ في النهاية اصلا شاشة فتح
الملف ايش .. ايش فيديوتها؟ بتعطيني مصار الملف
تمام؟ يعني احنا هناخد من الموضوع القادم ان شاء
الله لـ Graphical User Interface بس لازم احنا في
البداية نتعلم ال code هذا اللي اكيد هينكتب داخل او
في الخلفية بتاعة Graphical User Interface Enter
file path المستخدم يدخل المصار الان بندروح اعمل
openلل file path و هذا برجع لمتغير نسميه مثلا file
طيب
هيك أنا أخدت من مستخدم مثال الملف و عملت له open
الآن إيش بده أسوي أكيد لازم نقرأ الملف عشان نعد
كام سطر و كام كلمة و كام حرف دلنا فيه تلت طرق
لقراء الملف في method read بتقرا الملف كاملا read
lines بترجع ل list of linesوفي عندى read line
بتقرا سطر واحد وقولنا انا شخصيا بفضل افضل طريقة
اللى هى read line ليش؟ عشان ما احملش كل الملف
الذاكرة read كويسة و سهلة لكن بتاخد الملف و تحطه
فى ال memory كله لكن read line بتقرا سطر سطر فانا
لما اتعامل مع ملفات كبيرة افضل ان اتعامل مع سطر
سطر على اساس السطر اللى بخلصه و اشيله من الذاكرة
واضح؟ الا لو انا البرنامج تقرا بحتاج الملف كلهو
وجدت أنه يجب أن أقرأ أعمل read لكل الملف لكن هنا
ما أقدر أن أفعل هو أن أقرأ سطر سطر و أعد في السطر
كام character و كام كلمة و ما هو سطر ماهو counter
لا أسطر يعني أنا مقدر أتعامل مع السطر سطر صح أو لا
أعد كام كلمة فيه و كام character هو إيش المطلوب
أجيب كام كلمة في الملف كله فأنا بجيب line line بعد
كام كلمة فيه و بضيفها على countersome باعد كام
كلمة موجودة في الملف بدي أعد عدد الأسطور كل line
أنا بقرأ و بزيد واحد على counter تاني طيب فعشان
هيك أنا قبل ما أبدأ قراقة الملف بدي أروح أعمل تلت
متغيرات اللي هم مثلا ده سميهم lines يساوي صفر
words يساوي صفر و carsيساوي صفر هدولة ال counters
اللي بدنا نعده كام line و word و character بعدين
بقوله line بده اقراه لان سطر سطر طبعا هنا في عندي
غلط open و بحط هنا R file.readقرأت السطر الأول و
بعدين بقول while line لا يساوي فاضي مش هيك انا
بقرأ السطر و بقول طالب السطر مش فاضي لان بدأ امسك
السطر و اد كام كلمة فيه و كام character اول حاجة
بعمل بقول ال lines زائد يساوي واحد يعني انا مدام
قرأت السطر بضيف ال counter بتاع ال linesوالان فى
.. شوف لإن فى السطر واحدة حلها دى، بدى اكتبها و
اقولولى إيش بتعملها دى؟ مين
يقوللى هذا السطر إيش بعمله؟ عدد الكلمات فى السطر؟
كيف بعملها؟ عدد الأحرق
طيب هذا السطر بيجيب عدد الكلمات فى السطر طبعا اللى
بيسوي انه بروح بجيب السطر و بعدين بعمل split بناء
على عياش مسافة هذا ايش بيرجع عندى هنا dot split
بيرجع عنده list يعنى هذا كل اللى مظلل قدامكوا
بيرجع list طبعا و بعدين جيبة len لل list هذه طبعا
انا اختصرتسطرين في سطر صح ولا يعني انا كان ممكن
ايش اعمل اقوله هنا اعمل list يساوي زي هيك صح ولا و
بعدين اقوله لن ال list صح
بس انا اختصرتها هذا
كله لن ال list ضفته امين تمام و بعدين cars
لأن بدي أضيف عدد الحروف اللي في ال line كم بدي
أجيب عدد الحروف اللي بال line منتقل بساطة من يقول
ليه لا
مش هحتاج أعمل counter حتة فيه أسهم ال counter لأن
ال line يا جماعة صح ولاال line مش عبارة عن نص احنا
لما نعمل line للمص اش بده بيجيب ليه؟ عدد ال
characters صح؟
ما هي المسافة تعتبر ال character طبعا؟ ماشي بتكونش
تحسبوا المسافة وقتها بده اضطر ان اعمل for loop
طبعا؟ بده يقول four I in lineصح؟ إيش هاد بتعمل for
I ال line؟ بتمول علي كل character if I لا يساوي
space روح علي ال cars زائد وزيد واحد تمام؟ هنا أنا
بعد ال characters كلها ما عدا ما عدا ال space بس
أنا بتصور لو عدنا ال space مش غلط لإن هو ال space
يعتبر character
واضحة يا جماعة أنا هنا عساس أعد كل ال characters
ما عدا ال space فروحت عملت له for I in line احنا
قوله يا جماعة في النهاية ال text أصلا عبارة عن
list صح ال text ال string عبارة عن list فلما أقول
for I in I بيجيبلي character character إذا ال
character لا يساوي مسافة أروح زيد ال characters
is alpha is a character اه ممكن ماجربتاش انا بس ..
بس مش هيعد ايش ال underscore الرموز الخاصة طبعا is
alpha بتأكد ان هو alpha pedicle مش هيعد الأرقام
طبعا يعني انا بدي اعد ال characters بالشكل عام بغض
النظر هم رمز رقم is alpha بعدلي بس الحروف
الأفجاريةطب لو عاملنا بدل ال loop len list ال line
لحظة
لان انا عشان اجزء اي text بستخدم ال split تمام؟
لما .. ليش استخدمت انا ال split هنا؟ عشان اجزء ال
line لكلمات list of words و بعدين جيب الطول list
الكلمات عشان اجيب عدد الكلماتلأن عشان أجيب عدد
الحروف في ال line هو ال line أصلا عبارة عن list مش
ال line عبارة عن list of characters تمام؟ لما أعمل
link اللي هو بيجيبلي عدد ال characters اللي فيه
لكن لو عملت link لل line بيجيبلي عدد ال characters
بما فيهم ال space إذا بدأ أحسب بدون ال space بدأ
الطرق أعمل for loop الشكل هذا تمام؟
لأ لسه مخلصناش بدأ أروح أعمل كمان مرة
read line صح ولا في ال while loop مدام أنا خلصت
السطر كل سطر على حده بروح بقرأ السطر اللي بعده صح
يا جماعة ولا لأ انت معايا طبعا قرأت السطر بقرأت
السطر اللي بعده افحصلي على السطر اللي بعده اللي هي
سوى فراغ مش فاضي ونفذ نفس الخطوات زيد ال line
بواحد و جيب لي line dot split اه بالظبط و بنفذ
عليه نفس الخطوات بعد اللي فيهالان في النهاية بعد
ما يخلص ال file loop بعد ما يخلص الملف ممكن اقوله
file.close و النتيجة النهائية هتكون موجودة في ال
lines و ال words و ال cars المتغيرات اللي انا
عرفتهم فبقوله اطبعلي lines words و cars طبعتهم جمب
بعض واضح
يا جماعة السؤال هذا طب خلينا نجربه
طيب هنا هيطلب مني ال path بتاع الملف طيب
طبعا اللي بيقول ان انت عندك ستة lines و تمانية
words و واحد و اربعين character بدون spaces طبعا
هاي ال lines ستة واضحين الكلمات تمانية ليش هنا في
اتنين اتنينو بعدين اربعة و هنا في اربعة صاروا
تمانين و ال characters بعد كل واحد واضح
السؤال هذا يا جماعة طيب تعالى نشوف سؤال تانى
بقول
لي هذا السؤال
السؤال المظلل هنا Encode the file by adding 5 to
every byte in the file Write a program هذا من أسلة
الكتاب that prompts the user to enter an input
file name and output file name and saves the
encrypted version of the input file to the output
file إيش يعني؟ هنا طلب مني أعمل file encoding إيش
يعني encoding؟termise او تشفير للملف يعني كيف فكرة
تشفير الملفات او ان اعمل encoding لهم هنا بدي
استخدم طريقة بسيطة انه بقول مثلا my name هي جملة
is Ahmed بدنا نشفر هذا بحيث ان الناس اللي مايقرؤوه
مايفهموش ايش النص هذا معناه بقول يروح لكل حرفمش كل
حرف عبارة عن اللي له ASCII code زيد ال ASCII code
بتاعه بخمسة هيصير اش تاني ممكن يصير P مثلا او Q
فح؟ و هذا .. و هذا هيصير اي حرف اخر ممكن يكون بيه
capital و هذا ال space بيصير حرف تاني طبعا ممكن
يصير M مثلا كل حرف لو انا لابد في ال ASCII code
بتاعه زيدت عليه رقم او نقصت رقم هيصير اش مختلفطبعا
فالان هذا النص لما اي واحد يقرأه هيلاجيه مش هيفهمه
مش معناه الا طبعا مش هيجر هو يفهم ايش النص هذا الا
لو عرف ايش العملية الحسابية اللي عملت عليها عشان
ارجعها صح؟ فهو جولي اعمل encoding عن طريق إضافة
رقملل characters وهي عملية التشفير اللي بتصير
فعليا عمليات حسابية بلجأ انه يحول ال characters او
الرموز لحاجات تانية عن طريق انه يعمل فيها عملية
حسابية اكيد اعقد هتكون من هيك لان هذا المثال بسيط
سهل فك تشفيره سهل واحد يكتشف ايش اللي صار موجود
فيه تمام؟لكن لو كانت عملية معقدة انه امسك ال ASCII
code اضيف عليه كذا اطرح منه كذا جيب الجذر التبعه
كذا تمام ممكن تصير العملية اصعب انه كيف يفك تشفير
الملف طيب
عشان الحل هو ايش طلب مني encode the file by adding
5 to every byteWrite a program that prompts you to
enter an input name and output file name يعني
البرنامج هيطلب من ال user يدخل مسار الملف اللي
بدنا نشفره ومسار الملف اللي بدنا نكتب عليه نتيجة
التشفير واضح؟ يعني أنا هنا الملف الأساسي أنا
مابديش ألعب فيه أنا بدي أطلع لسخة مشفرة واضح يا
جماعة معاك؟ يعني هيطلب من ال user يدخل إيه؟ حاجتين
مثار الملف اللى بده اشفره ومثار الملف اللى بده
اكتب عليه المثار اللى بده اكتب عليه الملف الجديد
البرنامج
نفسه فيه read و فيه write and saves the encrypted
version of the input file to the output file يعني
بعد ما يعمل encrypt للملف الأول بخزن النتيجة في
الملف التالفخلّيني أحل خطوة خطوة أول حاجة بدا أطلب
من ال user دخل input فبدا أقول له source
path enter
path of file to be encrypted دخل
مسار الملف اللي احنا بنعمله encryption
destination path input
enter path of encrypted file هنا مسار الملف اللي
بناني يعمله encryption وهنا مسار الملف اللي هيكون
مشفر وين نكتب يعنى طيب
الأن بدنا نروح نقرأ محتوىالـ Source Path أنا بدأ
أشتغل على مبدأ أن أقرأ سطر سطر وكل سطر بدأ أشفره و
أكتبه على الملف التاني مباشرة يعني برضه احنا
هنستفيد من السؤال هذا نشوف مثلا كيف نعمل copy
لمحتوى ملف .. لملف تاني فبدأ أفتح الملفين فاحد
للقراءة والتاني للكتابةالثاني لسه مش موجود اكيد
يعني انا في النهاية بقى أطلع ملف شديد طبعا لكن
الحين بنعرف لما بنعمل open ل write لو الملف مش
موجود بنشيه طبعا طيب file 1 يسوي open source path
read
file 2
الان بدأ أقرأ سطر سطر من الملف الأول line يساوي
file واحد dot read readline الان بقوله why line لا
يساوي فاضي بدنا
نعمل هنا خطوات التشفير و نكتبه على الملف التاني و
بعدين نقرأ السطر اللي بعده file واحد dot readline
و في الآخر .. طبعا أنا نسيبت فراغ لسه ال code هنا
مش كامل close للملف الأول و close للملف التاني لأن
ال code التشفيرة و ال encoding بيكون هنا طبعا انا
اللي بسويه انه بروح للملف الأول و بقرأ السطر كل
سطر على حده طبعا هنا بعمله processing و بعدين
بقوله اقرأ السطر اللي بعده و هكذا طيب هنا ايش بنا
نسوي اللي بنا نسويه بنا نمسك السطربنروح لل
characters بتاعة السطر character character ونزيد
على كل character خمسة طبعا طيب هنا بدنا نعمل
string جديدة اسمها ال
new line ايش ال new line هاد ال string جديدة فاضية
طبعا بعدين بدنا نقول for I in line
ماذا يعني for I in line؟
لأ، لأ، كل حرف في السطر، تمام؟ كل حرف في السطر، طب
شوف أنا إيش بده أسول، الآن الحرف هذا بدي أحوله
لasky codeليش احوله ال ask code؟ عشان اضيف عليه
خمسة بعدين بعد ما اضيف عليه خمسة بده احول ال ask
النتج لإيش؟ ل character طيب كيف نحول ال character
ل ask code؟ ORD ORD هتاخد مين بين قسم؟ ال I و
بعدين زاد خمسة و بعدين هذا كم
CHR ايش ال CHR بتاعي مانا بتاخد رقم و بتطلعلي
character مرة تانية ال character اللي عندي اللي هو
وين موجود الآن في ال I طبعا بدي احوّله ask code
ORDI بعد هذا اتحول لرقم صح نتيجة ال function هذه
بزيد عليها خمسة ليش خمسة هو طلب مني في السؤال خمسة
و بعدين هذا كل الرقم الناتجبحطه كـ Parameter للـ
method CHR عشان يتحول لـ Character تاني والـ
Character التاني هذا كله بضيفه لمين؟ لـ New Line
فهمتوها
السطر هذه يا جماعة؟ كل الـ Character الناتج عندي
بضيفه لـ New Line الآن بعد ما يخلص الـ For Loop
هذه بطلع عندي Line جديد بشكل جديدلأن ال line
الجديد هذا هكتبه في الملف التاني في file name dot
write و بعطيله ال new
line و بحط مثلا slash in في الآخر عشان ينزل سطرة
جديدة خلصنا
مرة تانية بشكل سريع، هيقرأ مسار الملف الأول، هيقرأ
مسار الملف التاني، هيفتح الملف الأول للقراءة،
والملف التاني للكتابة، إذا لم يكن موجود، هينشئه،
بعدين، هيقرأ سطر سطر من الملف الأول، وطالما أن
السطر ليس فاضي، السطر الأمن حوله لشكل جديد، لسطر
جديدفالنتيجة عشان احاول لسطر جديد اعمل متغير اسمه
new line string لسه فاضي وبعدين مر على كل
character من ال line اللي جيبته بالملف الأول امسك
كل character جيب ال ask code تبعه واضيف عليه خمسة
ويرجع احاول له ايش ل character جديد واضيفهعلى new
line و في النهاية يكتب لي ال new line في الملف
الجديد و يرجع يقرأ الملف السطر التاني من الملف
الأول و هي نفس الخطوات لأ
لحظة اذا
انا لأ بتهيألي انهاشر صحلأ ال write كل ما أعمل
open للملف فبكتب ملف جديد طبعا يعني اذا أنا بعمل
write أكتر من مرة في open واحدة بيقنوا يكتب عليه
انتبهوا معايا يا جماعة اه لو انا روحت اعملت اسملكم
بتسأل بتقول انا عملت open للملف طبعا وحطيت هنا w
اجيت اعمل writeكتب حاجة على الملف و جيت اعمل write
تاني هيمحي المكتوب لأ انا مامحيش المكتوب ايش اللي
بيصير طالما انا عملت open مرة واحدة ماسكرتش لسه كل
عملية write مكتوف في سطر طبعا ..الان بعد هيك لو
عملت close للملف و رجعت عملت open تاني و حطيت
write هيمحي المكتوب
فال code اللي أنا عامله مافيش فيه مشكلة لأنه فعليا
هيضيف على الملف طالما أنا عملت open مرة واحدة هيظل
يكمل على الملف طيب عشان نجرب هذا الشغل بدنا نروح
للملف هذا واحد تبعنا و نكتب فيه سطرين my name is
Ahmed I study at IUG
دخّل مسار الملف اللي بنعمله encryption دخّل
مسار الملف الجديد تمام،
هيه خلصت، عملت ملف اسمه ink تمام،
هذا شكل الملف بعد إيش؟بعد ده شفرنا طيب بدنا نتأكد
اللي عملناها ده صح ولا غلط ايش بنعمله؟ بدنا نعمل
عملية عكسية هلجت يعني بده يقرأ الملف هذا و يطرح
منهم الخمسة و يخصه في ملف جديد عشان نتأكد و يرجعني
الملف الأصلى واضح يا جماعة ايش بنعمله؟ فروحت انا
للملف تبع ال code تبعي هذا بس حكيتله هنا بدل مزيد
نقص خمسة و بدى اشغل الملف اعطيله مسار الملف المشفر
عشان يطلع الملف الجديد واضحة كيف بدى اتأكد من حلل
اه فالان تاني enter file to be encrypted طبعا هي
decrypted المفروض 123 اله ink.txt مسار الملف
الجديد
Decrypt.txt هلجيت
فيه ملف جديد؟ هاي ايه شكل الملف بعد مراجعة؟ اظن
الـ Neoline عمل فيها مشكلة يعني اعتقد انه احنا لما
كتبناش هذه هيطلع الشغل صح لإن هو أصلا فيه Neoline
واضح يا جماعة السؤال هذا؟ طيب بهذا السؤال استفدنا
منه حاجتين اول حاجة شفنا كيف نعمل encryption و
بعدين طلبت سؤال شبيه فيه كيف انا اعمل copy لملف من
ملف لملف تاني نفس الحاجة نقرأ سطر يعني كل اللي
اعمله عشان اعمل copy للملف اني انا اشيل هذا السطر
و اقوله اعمل copy لل line نفسه يعني شايفين ال code
الآن هذاهذا ال code اللى موجود قدامكوا ايش بعمله
هذا
ال code اللى قدامكوا
انا انا حولت ال code من عملية copy نسخ ملف لملف
تاني ايش بيسوي هذا ال code بيقرأ سطر سطر من الملف
الاول و بروح بكتب وين؟ على الملف التاني يعني هذا
code copy ملف لملف تانيو الطريقة اللى استخدمتها
على طريق ال read line مش ال read أو ال read lines
ليش؟ لأن فعليا كل سطر على حده بياخدم الملف الأول و
مكتوب على الملف التاني خلص السطر الأول بروح وين؟
على سطر التاني و على كده بياخدش مساحة كبيرة في
الذاكرة
ودخل
مسار الملف التاسع السادسة واحدة؟
هيطلع له error الآن عشان احنا برضه هذا ال code
ممكن يصير عندى errors كتير صح ولا دخلت انا المصالة
ملف غلط ماشافش الملف ماقدرش اشتغل صلاحية الكتابة
على الملف فاحنا عشان نحل هذه المشاكل كلها كل ال
code تبع هذا بحطه ما بين ال try تمام
و في الآخر هنا بقوله ايشExcept وعشان أطلع الخطأ
بقوله إيش هات لل exception اللي بتطلع as x ليش
exception as x عشان أاخد الرسالة اللي بتطلع في
الخطأ و بقوله print
الإكس واحد بيقول طب ليش حطينا ال code كله مش انت
قلتلي المرة الماضية ما تحطيش ال code لأ لإن ال
code هنا كله معتمد على بعضه أكيد طبعا يعني اذا
ماقدرش يقرأ أي ملف من الملفين لازم ينفذش ال code
التالي
طيب يا جماعة خلينا الأن ندخل في موضوع جديد طيب
موضوع جديد و بسيط و هو موجود في الكتاب في chapter
14 تمام؟ احنا طبعا ال files و ال exception هنا ده
chapter 13 chapter 14 بيحكي عن حاجة اسم ال pupils
و ال sits و ال dictionaries اللي هو هنبدأ فيه ان
شاء الله اليوم طبعا هذا chapter ان شاء الله هيكون
سهل شبيه جدا بالموضوع ال lift و ال stringعشان هيك
الامراجة أو متابع المعانا هيلاقوا الموضوع هذا
الجديد بسيط ال
Python الجماعة فيها عدد من ال data structures ايش
هي data structures؟ اللي هي .. خلينا نسميها هيكل
البيانات اللي أنا بستخدمها للتعامل مع أنواع
البيانات المختلفة من ضمن هيكل البيانات اللي احنا
أخدناها ال list ال list فعليه الحاوية للبيانات صح
ولا؟ ميزتها عن ال variables العادية اللي بتاخد
أكتر من قيمةالان انا اتطرق لانواع اخرى خاصة من ال
list انواع خاصة من ال list استخداماتها مختلفة شوية
عن ال list اللي لها بعض الميزات الإضافية اول
نوع هنتكلم عليه حاجة اسمها tuple باختصار
شديدالـ tuple هو عبارة عن list غير قابلة للتعديل
يعني مثلا انا معرف list بقول مثلا list واحد يساوي
واحد اتنين تلاتة اربعة هذه list of four numbers
طبعا ال list هذه انا بقدر اعدل عليها صح؟ بتضيف
عليها بعمل append بدي احفظ remove بدي اعدل اي عنصر
بروح لل index و بغير القيمة الموجودة فيه لكن اذا
انا بس روحت غيرت الأقواس اللي هنا خلتهم زي هيكهك
صارت نوع تاني من ال list هدى بنسميها tuple حتى أنا
مابدش أسمي ال ال متغير list عشان مايصيرش فيه لخبطة
بتسميه T تي واحد هدى زى ال list تماما فيها
variables كتير لكن الفرق ان هدى ال tuple اللى جت
هدى بنسميه tuple اللى بين قصين زى هك هدى بنسميه
tuple اللى لايمكن التغيير على المحتوى
ليش؟ ليش بنعمله؟ يعني أنا عندي حاجة ثوابت، تمام؟
بديش حد يغير فيها أو يلعب فيها، بنستخدم ال tuple
يعني أنا شخصيا ماستخدمش ال tuple كتير، لكن .. بس
من المعرفة إن هو عبارة عن list بس غير قابل إن أنا
أغير فيه أي شيء، أيوة اتفضل انت حكيت ال text برضه
غير قابل تعدمه، بس تعدمه بطولة غير مباشرة، بس
القصة هي بتتغير
النص عبارة عن list of characters ممكن
لو يعني عن طريق أضافة character بيعملني نص جديد
لكن هذه لأ، أنا مقدرش أضيف عليها أو أحذف منها
بالمرة زي ما قلنا استخدامها فقط في حالة إنه أنا
بدي أعمل list من حاجات أنا بديش هي تتغير بالمرة زي
constants ثابتة بديش هي تتغيرطلعوا معايا كل ال
methods أو عدد كبير من ال methods اللي كانت موجودة
في ال list بقدر أنفذها في ال tuple يعني مثلا len
ال T1 هذا المفروض يتبع لي طول ال tuple في
عندي ال minimum و ال max و ال sum هذه كلها مصدر
methods كانت موجودة في ال list تمام؟ هذه minimumT1
Print Max
T1 طيب
ممكن كمان ان اعمل افحص اذا in او not in عشان اشوف
اذا العنصر موجود او لأ بقوله مثلا F5 in T1
print found else print
not found
لو انا عملت run لل code هذا
طبعا طبعا ليه؟ أربعة و واحد لين أربعة ال minimum
واحد ال max أربعة و بعدين طبعا ليه؟ not found لأن
الخمسة مش موجودة في ال tuple يعني نفس ال methods
اللي كنا نطبقها في ال list بتعامل مع ال tuple زي
كأنه بتعامل مع ال list لكن بقدرش أغير محتوى بدليل
أنه تعالوا نروح ل T1 و نشوف هل فيها method ل
appendهذه مثلا مافيش عندي method اسمها append لو
موجودة نطلع ليها في الخيارات صح؟ مافيش عندي append
في عندي count ليش بنستخدم ال count في ال list؟
عشان نعد العنصر كم مرة موجود وفي عندي ال index
موجودة ليش بنستخدم ال index في ال list؟ عشان أدي
العنصر و يقول وين موجود في ال listالمكان أول ظهور
فنفس ال methods اللي موجودة في ال list لكن لا تغير
على محتوى ال list موجودة هنا لكن أي method كانت
تتغير على محتوى ال list مش موجودة يعني مثلا مافيش
عندي حاجة اسمها sort لأن ال sort بتغير مافيش عندي
append إضافة لأن ال append بتغير مافيش عندي remove
تمام هاي remove مافيش عندي بالمرة باختصار أي
method بتغيرش موجودةأي method لا يتغير على الـ
tuple الموجودة من الـ methods الموجودة في ال list
لكن أي حاجة لا تتغير لأ تعالى نشوف ال tuple مثلا
قلت له tuple 1 و اضغط فيه 7 ايش أنا قاعد بعمل؟ بدى
احاول اغير العنصر التاني في ال tuple تمام؟ تعالى
نعمل run هيطلع ليه error ان انا مقدرش اعدل عنصر في
ال tuple
بس طبعا بقدر أوصل أطبع .. أطبع العنصر، يعني هيك
بمشي الحل، طبعا، طبعا، لكن تغير؟ لأ
تمام؟ تغيير لأ ال slicing موجود تمام؟ ليش؟ لأن ال
slicing فعليا انا بغيرش حتى في ال list انا بغيرش
على ال list انا باخد قطعة منها نسخة .. يعني نسخة
جديدة تمام؟ فال slicing موجود مثلا هيتي واحد اعملي
مثلا من اتنين للاخريعني هيأخذ من ايش هذا تلاتة و
اربعة طبعا اش برجع ت واحد اتنين هيرجعلي list طبعا
ال slicing لل tuple برجع list كيف
اتأكد انه اش رجعلي بطبع ال list اللي طلعت عندى هنا
مرة تانية يا جماعة هذا ال slicing صح؟ هي كتبت اسم
ال tuple و قلتله من اتنين للاخر حتى
لأ رجعلي tuple تمام؟ يعني ال slicing لل tuple
رجعلي ال tuple تاني فيه بس ايش العناصر اللي أنا
طلبتها تمام؟
طيب ممكن يكون عندي أنا list و احولها ل tuple يعني
مثلا عندي list فيها مثلا أحمد اتأكد
tuple
أنا هنا طلع معايا عملت أنا list تمام و هنا روحت
عملت tuple بين قصين list يعني انا ايش عملت هنا
حولت ال list ل tuple ليش مثلا بديش حد يغير محتوى
ال list هذي يحذف منها تمام يضيف عليها حولتها ل
tuple طبعا انا لما طبعت هذه طبعة لمحتوى على نفسه
بس لاحظ ان القصين
قصة ال tuple يعني خلاص اتحولت طبعا ال list يا
جماعة ضلت نسخة ال list لكن طلع عندي tuple جديد
يعني انا بقدر اعدل على ال list الأصلية لكن ال
tuple اللي طلع عندي هو اللي بقدرش اعدل عليه
طيب هذا بالنسبة لل tuple زي ما قلنا استخدامه محدود
في ال python و استخدامه فقط لما انا بده اعمل
مجموعة من العناصر اللي بدهش حد يغير عليها عشان
هيك انا قلت انه في الأول انه في ال chapter هذا
بيحكي عن أنواع خاصة من ال list لان ال tuple
باعتبروا زيك انه list لكنه من نوع خاص
طيب نيجي الأن لنوع تاني من .. برضه من ال list اللي
احنا بنسميه ال set طيب
ال set في الرياضيات هي عبارة عن أيش في معاها؟
مجموعة، تمام؟ إيش خصائص المجموعة في الرياضيات؟ أهم
خاصية للمجموعة لل set أن العلاصر لا تتكرر فيها
العلاصر في ال setلاتتكرر يعني احنا كيف كنا نلمس
المجموعة في الرياضيات كنا نحطهم بالقصير هدول صح
ولا؟ تمام؟ وكان يقولون كمان انه ممنفعش ان يكون
عنده عنصر مكرر صح هذا غلط تمام فكرة الست يا جماعة
هي عبارة عن list عادية لكن لا تسمح بتكرار العناصر
على عكس الـ tuple هنشوف إن ال set مهمة ويلها
تطبيقات كتير مش بس تكرار إليها و تطبيقات تانية
هتمر علينا من خلال الأمثلة خلّينا أول حاجة نشوف
كيف ننشئ set عشان ننشئ set بمتاهة البساطة زي ما
عملنا في ال list هاي S1 يساوي كيف أحنا كنا ننشئ
list كنا نعمل زي هيك، صح؟ يعني عشان ننشئ set بنعمل
زي هيكوبنحط بينهم العناصر 1 2 2 4 6 7 8 7 واحد
هيقول لي في عناصر مكررة هنا حتى لو انا كتبت عناصر
مكررة اي حاجة مكررة هو لحاله بتجهلها والدليل ان
انا بعد ما انشأت ال set روحت عملت print ل S1
تعالوا شوف ايش صار فيه موجود في ال set
تمام؟ العناص المكررة شالها لحاله عشان نشيل التكرار
هل جيت احنا مثلا مثلا هن .. نفكر قدام شوية إيش
هنستفيد من ال set لو أنا قلت عندي نص مثلا فيه
كلمات مكررة و أنا طلبت أنه بده نشيل الكلمات
المكررة من النصإيش بنعمل؟ النص بنحوله ل list و ال
list بنحولها ل set لحاله بيشيل ايش؟ كل الكلمات
المقارنة
طيب
في مشكلة صغيرة في ال set صح هي أعطتني ميزة إنها
بتشيل التكرار لكن أنا بقول إن ال set لا تضمن
الترتيب
هذه نقطة مهمة بمعنى إن أنا ال set جت ضفت عليها
عناصر، ممكن العنصر اللي أنا أضيفه ينحط في الأول،
ينحط في النص، على عكس ال list ال list بتضمن ترتيب
إضافة العناصر، يعني العنصر اللي بضيفه في الآخر،
بيضله في الآخر، تمام؟ العنصر اللي بضيفه في الأول،
بيضله في الأول، ال set لأما بتضمنش .. الترتيب مش
مضمون، تمام؟ ممكن تطلع العلاصر عندك مرتبة لكن
الترتيب فيها مش مضمون ولجت هنشوف أمثلة على هذا
الكلام ممكن
مش كل ما أمرن يعني ممكن أنا ضفت عنصر جديد، العنصر
الجديد بحطه في الرقم 2 مثلا، تمام؟ هو عنده طريقة
داخلية للترتيببعرفش كيف هو برتبها داخليا لكن المهم
انه الترتيب العلاصر في ال set مش مضبوط طبعا اذا
انا بدور على الترتيب بروح ل list طبعا هنشوف انه
ممكن نحول ال set ل list و ال list ل set ليش هنلجأ
للتحويل أثناء البرمجة عشان نستفيد من مميزات هذه و
مميزات هذه ال set فيها مميزات انها بتشيل التكرار
الست فيها وميزات تانية هتتكلم عليها قدام انه بقدر
اشوف العلاقة بين ست وست تاني هل في تقاطع بينهم؟ هل
هذه بتحتوي هذه؟ هل فيش في عناصر مشتركة بينهم؟ لكن
في ال list هذه الحاجات صعبة ان اعملها ال list فيها
ميزة انه بتضمن الترتيب وممكن اعمل sort لها ال list
هذه مش ممكن اعمل فيها sort لان قولنا مالها بتضمنش
الترتيب
طيب أول حاجة جزء كبير من ال methods الموجودة في ال
list موجودة أيضا في ال set يعني مثلا print lin
set بيجيب لطول العناصر الموجودة فيها max set أكبر
عنصر sum
set
print 13 in S1
ايش هنا هذا الكلام يا جماعة؟ هنا طول ال set أكبر
عنصر مجموعة العناصر اللي فيها هذي افحصلي هل ال 13
موجود في ال set معروف ان ال in هذي بترجع true او
falseلو بدنا نجيب عنصر من ال index يعني، نحط
أناقوص، أناقوص بتاعة ال .. بدنا نجيب عنصر معين من
ال set ه .. ه .. أناقوص ال set في ال .. ال .. نفس
.. نفس .. نفس .. نفس .. نفس .. نفس .. نفس .. نفس
.. نفس .. نفس ..
نفس ..مافيش عندي ان انا .. او مثلا لو طبعنا S2 مش
هنستفيد منها كتير لإنه بتقولنا الترتيب مش مضمون
انا عارف بس بحكي أكواس .. أكواس ال S والأكواس هم
.. هم نستخدم .. اه .. ما .. هد مش .. لحظة شوف هد
هتشتغل ولا لأ .. هد أصلا تمام مش هتشتغليعني في ال
set لا يمكن الوصول لأي عنصر بال index، تمام؟ ليش
موقفين أنا في ال set؟ لأنه أصلا المبدأ أنك تصل بال
index، هذا مفيد أو أنا أستفيد منه لو أنا .. يعني
العناصر مرتبة، تمام؟يعني أنا بدي العنصر الأول
بقوله صفر الأقل في الست المشكلة أنه أنا ضفت
العناصر لكن هو مرتبليش إياهم زي ما أنا ضفتهم
فالترتيب مش مضمون فبقوللي أن هذا ال index مش موجود
هنا إذا أنا بدي أوصل على ال index بدي أضطر أحول ال
set لإيش على الست عشان أوصل العناصر واحد واحدالان
هنشوف من خلال أمثلة عملية خلينا بس نستعرض إيش فيه
في ال set و بعدين هنشوف كيف هنستفيد منها في أمثلة
عملية طيب هذا ال method زي ما حكينا ان كلها موجودة
في ال set و موجودة في ال list بقدر
كمان أعمل for loop على ال set يعني مثلا for i inS1
مثلًا مثلًا مثلًا مثلًا مثلًا مثلًا مثلًا مثلًا
مثلًا مثلًا
مثلًا
مثلًا مثلًا مثلًا مثلًا مثلًا مثلًا
مثلًا مثلًا مثلًا مثلًا مثلًا مثلًا مثلًا مثلًا
مثلًا مثلًاالـ set زيها زي ال list برضه تماما
باستثناء واحد ان هي بتسمحش بالتكرار ما بنستخدمش ال
index وفي اختلافات تانية يعني مثلا احنا شوفنا ال
methods المشتركة تعالى نشوف ال methods المختلفة
بينهم
S1 كيف كنا نضيف على ال list؟ Append الان عشان نضيف
حطها Add ليش حط Add؟ ليش غير الاسم؟ كلمة Append
معناها ضيف في الآخر كلمة Append في الإنجليزي يعني
ألحق في النهاية طبعا هذه مدام الإضافة مش مضمون و
انا يحطه طبعا فغير اسم اسمها من Append إلى Add Add
معناها ضيف لكن انت ممكن تضيفه تلاقيه حط وين؟ في
الأولأد ثلاثة أد
ستة ستة موجودة خمسة سنضيف ستة ثانية ثم نطبق طبعا
هنا هل ضعف الثلاثة؟طبعا ماشي اضاف التلاتة وين بعد
الاتنين طبعا الخامسة بعمل
ترتيب بس برضه مش مضمون ممكن نلاقي النتائج مش مرتبة
طبعا الستة
طبعا لأنها موجودة مرضيش اضيف ستة تانية بعد انطباعت
الست هيجيبليها بالشكل هذا فباختصار يا جماعة ان هو
بدل append استخدم add
بعدين في عندى method تانية شبه في اسمها update
تمام هذه يا جماعة update زيها
زي ال extend بتذكرين ال extend في ال list ايش
فيديتها انها تضيف list جديدةهنا غير اسمها من
extend ل update لنفس السبب انه هدى تستخدم ايضا
لإضافة set داخل set تانى لكن ماسمعاش extend لإن
كلمة extend معناها انه ضيفة إضافة جديدة صح ولا في
الآخر extend زى تمدد دايما الحاجة اللى بتتمدد
الإضافة الجديدة بتكون في الآخرطبعا فهنا لأ انا
جالك بغير الاسم بسميها update لأنه ماتحملش معنى
انه الإضافة او ال set الجديدة اللي هضيفها تكون في
الآخر يعني باختصار هذا ال update بتضيف set لكن وين
بتضيفها وين العناصر اللي بتنحط مش معروف طبعا شوفوا
إيش بدي أعمل أنا ستة و ستين تلاتة أربعة عشر ضفت
set جديدة
على S1 Print
S1
هو
أكيد ضاف هذه كلها انضافت على هذه
الـ extend كان يعني العناصر الموجودة في ال list
يضيف عليها بضيف ال data عادية ال update زيها زي ال
extent في ال list أخد العناصر الموجودة في ال set
الجديدة وضافها في ال set الأولى لكن اتطلعوا شوف ال
66 مثلا وين ضافها وين حتى ال 66؟ اه مع أي اللي
بنحكي ان الترتيب مش مضمونالتلاتة ضافة هنا
الاربعتاش ضافة هنا لكن في النهاية كل العناصر هدول
اللي حطوا هنا في الست الأولى
يبقى
يا جماعة بدل ال append و ال extend موجود هنا قاد و
update تمام؟
طيب فى عندي كمان method كيف نحذف من الست زى ما
بنحذف من ال list كيف كنا نحذف من ال list فى طرف
تانى فى remove و فى del تشبه فرجوا عن بعض ال del
بتتعامل مع ال index ال remove بيعطيه لأنصر بدور
عليه موجود و بيحذف و فى كمان ال popيبقى فيه تلت
طرق للحذف ال remove و ال pop و الدل طيب ال remove
و ال pop موجودين في ال set لكن الدل لأ ليش لأن
الدل معتمد على ال index تمام؟ و ال pop الموجودة في
ال set هنشوفها الآن بقدرش حدد فيها index بتشيلي بس
من الأول تعالى نشوفها أول حاجة أسهل طريقة أني أحذف
ال remove
باطل الأنصار اللي بدي أحفظه ليكون أربعة S1 تحفظه و
بعدين ا print S1
تعالوا نشوف ال list اللي طلعت عندي هاي واحد اتنين
الأربعة شالها ستة سبعة تماما طبعا
ال remove لو ماكنش الأنصار اللي بدي أشيله موجود
هيطلع error تمام يعني مثلا شيلنيعشرة هذا
بطلع error فالأفضل
أنه قبل ما أحدث أقول له F10 N S1 صح؟ روح عمل
remove
في طريقة تانية هم عاملينها في ال set لحالها اسمها
زي ال remove بالظبط بس اسمها discard و
بعطيله مثلا أربع ال discard زي ال remove بس الفرق
أنه لو الأنصر مش موجود بيطلق ليش error يعني
مثلا أنا هنا روحت عملت حذف لعشرة
و فعلياً ال list مش فيه عشرة ما طلعليش قرار طبعا
يعني remove و discard زي بعض بعطلهم ال item و
بيشيلوه من ال set لأن
في method تاني للحذف اسمها pop تعالوا نشوف إيش
بتعمل طبعا إحنا في ال list بتذكرين إن ال pop
طب لحظة ال pop اللي موجودة في ال list اول حاجة
ممكن تاخد index ممكن لأ يعني انا مثلا ممكن اقوله
في ال list اعطله pop خمسة يعني اطلعه للانصر الخامس
و طبعا الفايدة التانية لل pop انها بترجع الانصر
اللي بحثه في متغير مثلا R اه لو ماحطناش حاجة بتشيل
من الآخر تمام؟
في ال .. في ال set موجودة ال pop تمام؟ لكن بنفعش
أحط لها index نشوف إيش هتطلع في
ال pop بتشيلي أول عنصر موجود في ال set تمام؟
ال pop بتشيلي أول عنصر موجود في ال setطبعا ال pop
هنا مش هتفيدني كتير لانه انا مش عارف او مش ضامن
ايش هو اول answer طبعا فانا مفضلش استخدامها هنا
فافضل طريقة الحذف من ال set اللي هو استخدم ال
remove او ال discard الفرق بين remove و discard ان
ال remove بتطلع اقول ان هو ال answer مش موجود و ال
discard لأ
يعني يا جماعة اللخص اللي حكيناه أن ال set تقريبا
شبيه جدا في ال list لكن مافيش فيها تكرار مافيش ..
لأنه التكرار أو المكان العناصر مش مضمون الوصول
المباشر باستخدام ال index مش موجود تمام؟ أي
عمليات؟كانت تعتمد على ال index برضه مش موجودة يعني
مثلا s.index مافيش method اسمها index في ال list
كانت موجودة ايش فايدة ال method index في ال list
اتجيبلي مكان اول ضهولة لل answer صح يترجعلي رقم في
ال set هذه مش موجودة انت بيقولي مدام انت الترتيب
مش مضمون يجيبهم cash تعرف وين كل answer موجود فأي
حاجة اللي عم بتتعامل مع index بطلت موجودة في ال
setالان اي method لها علاقة بالمحتوى هتلي طول ال
list او ال set هتلي اكبر عنصر او اصغر عنصر عدد
العناصر مثلا
مجموعة العناصر الموجودين for loop هل in او not in
العنصر موجود او مش موجود هذه كلها موجودة في ال
list و في ال set ال set زي ال list بقدر اضيف عليها
لكن هو مغير أسماء ال methods يعني بدل ما يستخدم
append و extend استخدم add و update طبعا الحدث طرق
الحدث بال value موجودة ماعنى بال value بالقيمة زي
remove مثلا طرق الحدث بال index مش موجودة زي ال
deal واضحة كيف؟
الآن ال setمافيش فيها sort ليش انه احنا نقول لا
تضمن ترتيب العناصر طيب
ال
set فيها clear ايش يعني زي ال list اللي حذف كل
العناصر ال tube اللي فيه clear ايش رأيكم من غير ما
نجرب ال tube اللي فيه clear لأ لأن ال tube اللي
انا انشقته مينفعشأعدّل عليه واحد في العناصر
الموجودة فيه طيب أثناء البرامج هنحتاج لماع بشكل
كبير نحوّل من set ل list أو list ل set ليش؟ لأن
أحيانا أنا بحتاج خصائص مش موجودة في ال set فبضأ
الطرق أحولها ل list عشان أستفيد منها يعني مثلا من
الأسئلة هناخدها بعد ذلك أن أنا أعطي علامات أو
أرقام أو أسماء أشخاصأقول له شيل الامكرر و رتب ليه
أشرح كيف نحل سؤال زي ايه؟ زمان
شي اللي مكرر كانت جثة موجودة في ال list صح؟ كنا
نمر عليها ناسر و نشوف نعمل list جديدة، متذكرين؟
اللي هي .. اللي .. كنا نعمل سجل، كل حاجة نمر عليها
نحطها في list تانية، هل موجودة في ال list التانية؟
إذا موجودة، خلاص ماضفها، مش كنا نعمل زي ايه؟ اللي
قال لأ، بمنطقة البساطة، عشان أشيل التكرار، ال list
بحولها ل six، راح التكرار كلهطب بعدين بنرتبها؟
مانفعش أرتب ال set بقعدش أحولها ل list و برتبها
طبعا؟ هاتوا الأن ناخد مثال عالسريع إن أنا في
المحاضرة and list فيها
مثلا أسماء أشخاص أحمد عمر علي كمان أحمد
الان انا ادلس طلبت انا ان اشيل التكرار و ارتبه
مابجديا كل اللي بدي اسوي هو بدي احول ال list ل set
عشان اشيل التكرار كيف؟ بعمل set 1 هذي اسم ال set
كيف احول ال list ل set؟ بكتب كلمة set و بين قصين
بحط ال list تعتي بهو
ال list اللي عندى بدي احولها ل setبستخدم الـ
method اللي هي set و بحطله بين قسين ال list بتاعتي
مش هذه list واحد حطيت هنا هي list واحد هذه تحويل
ال list ل set هذه ايش بترجع ال method set بترجع
set جديد الأن
ال set الجديد هذا فيها العناصر بدون تكرار والدليل
أنه أنا تعالي نعمل run تمام هي جب للعناصر و كل
مكرر مالهكله حدث لكن شايفيني الترتيب خرب الدنيا صح
ومش أبجدي يرتبها ولا عكس ترتيب الأبجدي لأنه طلع و
هنا أحمد حطها في الآخر صح ولا لأ و هنا علي حطها
يعني .. يعني مفيش ترتيب مش مضمون بالمرة ولا بنقدر
نقول أنه أبجدي ولا reverse alphabetical تمام مش
مضمون الترتيب لأن بدي أكمل على السؤال أنه أنا بدي
..هيكتب العناصر بالدرجة
بتخزن في list واحد بدل من متغير جديد بكتب برضه
كلمة list و بحط بين قسين ال set بتاعتي يعني
باختصار يا جماعة عشان احول list
ل set بستخدم ال method set و هنا بحط ال list
بتاعتي عشان احول ال set ل listبكتب list و بحط هنا
إيش ال 6 طيب حولناها ل list ليش؟ إيش الهدف من
التحويل ل list؟ عشان أقدر أقول له list1.sort و
بعدين print بالنسبة
لهذه ال list بدون تكرار و العلاقات اللي فيها مرتبة
أبجدين تمام؟
الموضوع هذا يا جماعة ال chapter هذا زي ما قلنا
بسيط بيعرضنا خلانا نقول data structures اضافية او
انواع خاصة صميناها من ال list تجاوزا انواع خاصة من
ال list اللي هي ال tuple وال set وفي حالة تالتة
اللي هي semantic channels هتكلم عنها لاحقا ال
tuple list لا يمكن التعديل عليها هذا معناه ان اي
method فيها تعديل او تغيير مش موجودة ال setبتلغي
التكرار هذا معناه ان اي method بتتعامل
مع ال index برضه مش موجودة نقطة أخيرة جمالنا
المحاضرة بيحكيلي كمان في ال python ان ال
performance او ال efficiency بتاعة ال set و ال
tuple اكتر من ال list ايش ان efficiency يعني
فعالية او كفاءة ال set و ال tuple اكتر من ال list
يعني انا لما اجي اعمل for loop على ال setهتكون
أسرع من إني أعمل for loop على ال list، هي معناه ال
efficiency، تمام؟ الإضافة و الحذف و البحث في ال
set و ال tuple أسرع من ال list، أسرع، طبعا هذه
وانا بتفرج معايا، لو أنا بتعامل مع برامج فيها data
ضخمة جداوبدي ابحث مثلا في list في الحالة هذه إذا
كانت البيانات ضخمة وانا باخد وقت طويل في البحث
ممكن أحول ال list ليش؟ ل set أو ل tuple كم
بحول ال list ل tuple بحط كلمة tuple و بين قصين بحط
ال list عادى فبس دورنا نقطة ال efficiency في أي
سؤال يا جماعة؟