التخطي إلى المحتوى الرئيسي

لغة البرمجة بايثون: الدرس العاشر التعامل مع القوائم

 المقدمة 

القوائهم. ما هي القوائم هي عبارة عن ليست نقوم بوضع داخلها الكثير من الشياء على سبيل المثال لنقول لدينا حفلة ولدينا اشخاص مدعوين من الممكن جدا حضور بعض الناس الغير مدعوين للحفلة وهنا يأتي دور قائمة الناس المدعوين. من خلالها يمكننا تحديد الناس المدعوين للحفلة والغير مدعوين لن تكون اسمائهم على القائمة ولذالك لن يدخول الى الحفلة. الأن سوف يأتيني شخص ويقول يا محمد سوف انشاء متغير لكل شخص واكتب انه مدعو او لا وفي هذه الحالة لن احتاج الى القائمة. جوابي لك يا صديقي لنعتبر المتغير الواحد شخص وانت لديك 100 اسم او 100 مدعو في حالتك هذه سوف تقوم بأنشاء 100 متغير وتجلع 100 شخص يقف على الباب وهذه سوف تأخذ مساحة كبيرة وسوف تضهر العديد العديد من المشاكل لهذه يفضل استهدم القوائم في الشياء التي هي لها معنا واحد ولكن هي فعلا تختلف مثل ارقام الهواتف اسماء الناس وغيرها من العلومات ولنفترض انت قمت باستخدام القوائم سوف يكون لديك شخص واحد ولديه قائمة كاملة بأسماء المدعوين الى الحفلة او حتى الأجتماع 
 
 
 

ماذا سوف نتعلم في درس اليوم

في حال وجود قائمة من الطبيعي ان نحتاج الى ان نحذف شخص او نضيف شخص او حتى نأخذ منها نسخة وفي درس اليوم سوف نتعلم كيفية التعامل مع القوائم بأحترافية

طريقة انشاء قائمة List

في الحقيقة هناك طرق عدة لأنشاء قائمة وكلها سهلة والموضوع نفسهُ سهل جداً 
واول طريقة لأنشاء قائمة هي ان تقوم بكتابة اسم المتغير كما تعلمنا وكتابة علامة اليساوي وتضع اقواس square brackets [] وتضع داخلها القيم كما تحب وفقط هذه كل شيء لا كثر ولا اقل وهذه مثال على ذالك

names = ['hasan','ali']

او يمكنك وضع اسم للمتغير وبعدها علامة الياسوي = وتستخدم دالة List لأنشاء قائمة وهي سوف تأخذ منك قيمة واحدة وسوف تكون النتيجة هي ليست او قائمة وهذه مثال على ما اقول 

names = list('ali')
 
 والأن دعوني اكتب لكم مثال بسيط لأنشاء قائمة ويوجد داخلها 5 اسماء وبعدها نطبع هذه القائمة

names = ['Hassan','Mohammed','Mohannad','Hamza','ali']
print(names)

وهاكذا نقوم بأنشاء قائمة بكل بساطة يا شباب

طريقة اضافة قيم جديدة الى القائمة

الوصف

في حال قمنا بأنشاء القائمة وبعدها نريد ان نقوم بأضافة قيمة جديدة لها بدون الرجوع الى القائمة نفسها والتعديل عليها نريد ان نقوم بالأضافة من طريق الكود وهذه الشيء جداً جداً مهم وسهل ولهُ طرق عدة

 append

اول واشهر طريقة لأضافة القيم هي استخدام دالة append لأضافة القيم الجديدة الى القوائم. جميل الأن دعونا نتحدث عن دالة append قليلاً بكل بساطة هذه الدالة تقوم بأخذ منك القيمة وتقوم بأضافة القيمة الى القائمة وتقوم بأضافتها في اخر القائمة وهذه مثال بسيط جداً عن كلامي

names = ['mohammed','zinab','nour','hasan'] # A List With some names
print(names) # printing list of the names
names.append('ali') # add ali to the list of the names
print(names) # printing the list

وكما ترون تم طباعة لنا القائمة بدون اسم ali في الأول وفي المره الثانيه وبعدما قمنا بأضافة علي الى القائمة تم طباعة علي في القائمة وايضا يمكننا تنكرر الأضافة لأي اسم او لأي قيمة نريد وحتى ان كانت متكررة كما هو موضح في المثال التالي

names = ['mohammed','zinab','nour','hasan'] # A List With some names
print(names) # printing list of the names
names.append('ali') # add ali to the list of the names
names.append('ali') # add ali to the list of the names
names.append('abd allah') # add abd allah to the list of the names
print(names) # printing the list

  insert

الطريقة الثانيه لأضافة القيم الى القوائم هي عن طريق استخدام دالة insert وهذه الدالة تختلف عن دالة append اختلاف بسيط وهو ان دالة append تقوم بأضافة القيم تلقائين في اخر القائمة ولكن دالة insert انت تقوم بتحديد مكان اضافة العنصر عن طريق تحديد الـindex على سبيل المثال 
l1 = ['ali','mohammed','hassan']
l1.insert(1,'abdallah')
print(l1)
  كما ترون في هاذا المثال قمنا بتحديد مكان اضافة عبدالله في العنصر الأول والذي هو قيمته الحاليه Mohammed سوف تكون abdallah وسوف يتقدم mohammed الى الـindex رقم 2 
 

extend

مثلا لدينا قائمتين الأولى فيها ارقام والثانيه فيها اسماء ونريد اضافة قيمة القائمة الأولة الى قيمة القائمة الثانية كل ما علينا هو استخدام دالة extend لأضافة عناصر القائمة الأولة الى عناصر القائمة الثانيه وهذه مثال بسيط
l1 = ['alo','hassan','ziad']
l2 = ['nour','zaed','mohammed']
l1.extend(l2)
print(l1) 

طريقة عمل access على العناصر في القوائم

قبل قليل تعلمنى طريقة دمج قائمتين معاً والأن سوف نتعلم طريقة اختيار عنصر او عدة عناصر من القائمة مثلا لدينا قائمة توجد فيها اسماء فواكه مثل apple, banana, cherry, orange, kiwi, mango, carrot ونحن نريد ان نطبع مثلا شيء معين من القائمة كنص وليس كقائمة كل ما علينا تحديد index العنصر طيب ماذا اقصد ب index الـindex يا شباب هو عبارة عن رقم يمثل عنصر والعد الخاص بـindex يبدء من رقم 0 على سبيل المثال apple هي اول عنصر في القائمة والـindex الخاص بها هو رقم 0 او banana هيا ثاني عنصر في القائمة والـindex الخاص بها هي رقم 1 وهاكذا ومن خلال هذه الكلام نفهم من هاذا الكلام ان index يبدء العد من رقم 0 وليس رقم 1 ف مثلا كما قلنا نريد ان نطبع كلمة apple كل ما علينا معرفة index الخاص بها ونحن نراها اول قيمة يعني The Index الخاص بها هو رقم 0 اذن كيف يمكننا تحديد the index اليذي نريد كل ما علينا هو استخدام اقواس القوائم لتحداد القوائهم يعني اذا قمنا بكتابة [0] هذه يعني اننا قمنا بتحديد العنصر الأول في القائمة او قمنا بتحديد قيمة عنصر الأندكس رقم 0 والذي هو تفاحة وهذه المثال في الأسفل 
l1 = ['apple', 'banana', 'cherry', 'orange', 'kiwi', 'mango', 'carrot']
print(l1[0])
واريد ان اوضح ان عند تحديد العنصر نحن لا نتعامل معه ك نصر في قائمة انما نتعامل معه كما هو يعني اذا كان العنصر هو عبارة عن نص يمكننا التعامل معه كنص واذا كان رقم سوف نتعامل معه كرقم على سبيل المثال اذا قلنا 
l1 = ['apple', 'banana', 'cherry', 'orange', 'kiwi', 'mango', 'carrot']
print(l1[0].upper())
  سوف يتم طباعة كلمة apple ولكن كلها حروف كبار. جميل لنفترض اننا نريد ان نطبع اكثر من قيمة في وقت واحد بكل سهولة سوف نحدد العناصر التي نريد طباعتها مثلا سوف اطبع التفاح والكيوي والكرز
l1 = ['apple', 'banana', 'cherry', 'orange', 'kiwi', 'mango', 'carrot']
print(l1[0],l1[2],l1[4])
  مثلا نريد ان نطبع من الأندس رقم 0 الى الأندكس رقم 4
l1 = ['apple', 'banana', 'cherry', 'orange', 'kiwi', 'mango', 'carrot']
print(l1[0:4])
 الأن سوف يتم طباعة من العنصر رقم 0 الى رقم 3. ولكن نحن قمنا بتحديد العنصر رقم 4. يا صديقي في بايثون عند تحديد من العنصر الفلاني الى العنصر الفلاني سوف يتم التخلي عن العنصر لماذا لأننا قلنا رقم 4 أيي 4 مرات واذا قمنا بالحساب سوف نرى ان 0123 هذه 4 ارقام او 4 عناصر ولكن اذا قلنا الى رقم 5 سوف تكون 01234 لماذا ليئن الكمبيوتر يبدء العد من رقم 0 وليس رقم 1
جميل لنفترض اننا نريد ان نطبع من بداية القائمة الى العنصر رقم 3 سوف نقوم بكتابة  
l1 = ['apple', 'banana', 'cherry', 'orange', 'kiwi', 'mango', 'carrot']
print(l1[:4])
لنفترض الأن اننا نريد ان نقول اطبع لي من الـindex رقم 3 الى نهاية القائمة سوف نقوم بكتابة 
l1 = ['apple', 'banana', 'cherry', 'orange', 'kiwi', 'mango', 'carrot']
print(l1[3:])
مثلا نحن نريد ان نطبع اخر عنصر في القائمة ولكن نحن لا نعرف ما هو عدد العناصر الموجود فيها كل ما علينا استخدام - لتحديد العنصر ومع استخدام - سوف يبدء العد من رقم 1 وليس 0 وسوف يكون العد عكسي ف اذا قلنا
l1 = ['apple', 'banana', 'cherry', 'orange', 'kiwi', 'mango', 'carrot']
print(l1[-1])
سوف يتم طباعة اخر عنصر لأننا قمنا بالبدء من العكس لأننا قمنا باستخدام - في العد ف مثلا اذا قلنا  
l1 = ['apple', 'banana', 'cherry', 'orange', 'kiwi', 'mango', 'carrot']
print(l1[-4:-1])
سوف يتم طباعة لنا من العنصر orange الى العنصر mango

تغير قيم العناصر في القوائم

لنفترض اننا لدينا قائمة صغيرة تحتوي على اسم علي ومحمد وحسن ونريد ان نستبدل اسم علي بأسم احمد مثلا كل ما علينا ان نحدد العنصر عن طريق index الخاص به ثم وضع قيمة جديدة وهذه مثال بسيط ادناه
names = ['ali','mohammed','hassan']
names[0] = 'ahmed'
print(names[0])
والان بعد تغير القيمة عندما طبعنا العنصر رقم 0 او الأندكس 0 سوف يتم طباعة لنا ahmed ولن يتم طباعة علي لأننا قمنا بتغير القيم
 مثلا نريد ان نغير قيمتين الأن رقم 0 اصبح يساوي ahmed مثلا نريد ان نستبدل ahmed بali ونستبدل hassan بmalk كل ما علينا هو ان نستبدلهم كما في الطريقة السابقة 
names = ['ahmed','mohammed','hassan']
names[0] = 'ali'
names[2] = 'malk'
print(names[0])
print(names[2])
الأن كما تلاحظون تم تبديل احمد وحسن ب علي ومالك

حذف العناصر من القوائم

  remove

مرحبا يا اصدقاء لنفترض اننا لدينا قائمة تحتوي على  اسماء فواكه مثل تفاح وبرتقال وموز وكرز ونحن نريد ان نقوم بحذف الموز من القائمة كل ما علينا هو استخدام دالة remove لحذف العناصركما هو موضح في المثال ادناه
fruits = ['apple', 'orange', 'banana', 'cherry', 'carrot']
fruits.remove('orange')
print(fruits)

pop

الأن قمنا بالحذف عن طريق كتابة العنصر المراد حذفه ولكن لنفترض اننا لدينا نفس العنصر مرتين او اكثر ونريد ان نحذف عنصر معين او لنفترض اننا لدينا قائمة داخل قائمة ونريد ان نقوم بحذف القائمة الثانية 
fruits = ['apple', 'orange', 'banana',['Malak', 'Hassan', 'Hasan'] , 'cherry', 'carrot']
fruits.pop(3)
print(fruits)

del

مثلا نريد ان نقوم بستخدام احد دوال لغة بايثون لنقوم بحذف عنصر سوف نستخدم دالة del لحذف عنصركما هو موضح في المثال ادناه
fruits = ['apple', 'orange', 'banana', 'cherry', 'carrot']
del fruits[1]
print(fruits')
مثلا نريد ان نقوم بحذف المتغير من الرام ان لا يكون هناك متغير بأسم fruits من الرام بشكل كامل سوف نقوم باستخدام دالة del لحذف  المتغير
fruits = ['apple', 'orange', 'banana', 'cherry', 'carrot']
del fruits
print(fruits)

clear

مثلا نحن نريد ان نقوم بتنضيف القائمة ولكن لا نريد ان نقوم بحذف العناصر عنصر عنصر فهذه الشيء متعب وغير صحيح لهذه تم اختراع لنا دالة clear لتنذيف القوائم كما هو موضح ادناه
fruits = ['apple', 'orange', 'banana', 'cherry', 'carrot']
fruits.clear()
print(fruits)
 

Sort

حسنا الأن انتهينا من حذف العناصر الأن سوف نقوم بترتيب القائمة لنفترض ان لدينا قائمة كبيرة من الأرقام ونريد ان رتبها بشكل تصاعدي من 1 الى اكبر رقم بالترتيب الصحيح كل ما علينا استخدام دالة sort كما هو موضح في المثال ادناه
numbers = [55,12,33,64,23,53,90,84,72]
numbers.sort()
print(numbers)
مثلا لدينا قائمة تحتوى على اسماء ونحن نريد ترتيب القائمة على حسب الأحرف الأبجدية من a الى z مستخدم دالة sort كذالك كما هو موضح ادناه
names = ['John', 'Emily', 'Michael', 'Sarah', 'David', 'Jessica', 'Christopher', 'Emma', 'James', 'Olivia']
names.sort()
print(names)

copy

لنفترض ان لدينا قائمة ونريد ان نقوم بالتعديل عليها ولكن لا نريد ان نخسر القيم الحالية وبنفس الوقت نحن لا نعلم ما الذي سوف يحصل القيم القديمة بعد اضافة القيم الجديدة اذن الحل الوحيد لنا هو اخذ نسخة من القائمة القديمة وهناك 3 طرق او 4 طرق انا سوف اتطرق الى طريقة واحد لا نحتاج الى اكثر سوف نستخدم دالة copy لنسخ عناصر القائمة الى القائمة الثانيه
names = ['John', 'Emily', 'Michael', 'Sarah', 'David', 'Jessica', 'Christopher', 'Emma', 'James', 'Olivia']
new = names.copy()
print(new)

join

على سبيل المثلا لدينا قائمتين ونريد دمجهم لدينا اكثر من طريقة وسوف اتطرق الى كل واحدة منهن واول طريقة عن طريق استخدام + كما هو موضح في المثال ادناه
l1 = ['John', 'Emily', 'Michael']
l2 = [1,2,3]
l3 = l1+l2
print(l3)
او يمننا استخدام دالة extend لدمج القوائم مع بعضها البعض
l1 = ['John', 'Emily', 'Michael']
l2 = [1,2,3]
l1.extend(l1)
print(l1)

الخاتمة

الى هنا وقد وصلنا الى نهاية درس اليوم وهو طريقة التعامل مع القوائم بالتفصيل الممل اتمنى ان ينال المقال على اعجابكم ونعتذر لو كان هناك خطا ان اخطئنا فهذه منا وأن اصبنا فهذه من الله تعالى ودمتم سالمين



تعليقات

المشاركات الشائعة من هذه المدونة

شرح انشاء Label في tkinter

بدرسنا مال اليوم راح نشرح عن Label بtkinter درس اليوم سهل وبسيط وحلو بس احتاج منكم تركزون وياي بالشرح اليوم راح نتعلم شي اسمه widgets زين شنو هوا widgets الـwidgets اريدكم تتخايلونها مثل قطع Lego الي يستخدمونها الأطفال ببناء العابهم وكل widgets الها شغل مختلف عن الثانية يعني مثلا اكو widgets تكتب داخلها شي وهيه تعرضه على البرنامج( نص ) واكو widgets تضغط عليه وتسويلك شي معين ( زر ) اكو widgets تسمح للشخص الي يستخدم البرنامج انو هوا يكتب داخلها ( حقل ادخال ) واليوم راح اشرح الكم widgets الي تخلينا نعرض احنا شي على النافذة مالتنا  وهاي widget اسمها Label والها خصائص تخلي شكلها افضل او تخلينا نتحكم بالشكل مالتها مثل ( حجم الكلام, لون الكلام, خلقة الكلام, شكل الكلام ) وهواي اشياء ثانية اني شرحت شي بسيط منها بفيديو على قناتي على اليوتيوب وهاذا درسها شاهدو حتى تفهمون الي راح تقرو ورا الفيديو الفيديو   خاصة text هيا نكتب بيها الكلام الي راح يضهر على البرنامج مالتنا يعني مثل ما تكول المكان الي نكتب بيه الرسالة وهاذا مثال بسيط...

الأتصال بي MySQL

  بسم الله الرحمن الرحيم كيف حاليكم اصدقائي ان شاء الله بخير وعلى خير انا محمد و اليوم عدة لكم مقال جديد و في مقالنا لليوم سوف نتعلم كيف نقوم بالأتصال بي MySQL و سوف نقوم بحل مشاكل الأتصال كا المشكلة التي رقمها 1045 و سوف نقوم باأتصال بكل سلاسة لن اطيل عليكم و دعونا نرى الفيديو          و يا شباب يجب مراعات الأرف الصغيرة و الكبيرة حيث ان بايثون تهتم جدا في الأحرف الصغيرة و الكبير وفي حلقتنا لليوم قد استعما امر connect في مكتبة mysql.connector و قد ادخلنا في داخل امر connect قيم لي ال host و user و passwd و القيم التي ادخلناها هيا user ='root' و passwd ='' و host='localhost' و قمنا بعمل print("Done Connect ") حيث اذا تم الأتصال سوف يطبعها لنا و اذا ضهر خطاء لن يتم طبعتها و هاكذا هاذا هوى السكربت import mysql.connector as mysql mysql.connect(host='localhost',user='root',passwd='') print("Done Connect") و الى هنا وقد وصلنا الى نهاية مقالنا لليوم اتمنى انه اعجبكم وشكرا و مع السلامة

لغة البرمجة بايثون: الدرس الخامس المتغيرات

المتغيرات Variables المتغيرات هي عبارة عن صندوق نقوم بوضع داخله قيم مثل الصندوق الفلاني سوف تجد فيه الشياء الفلاني مثال ثاني الصندوق الذي اسمه حسن سوف تجد داخله معلومات تخص حسن مثل اسمه او عمره او تاريخ ميلاده او مكان سكنه او الصندوق الفلاني سوف تجد فيه الرقم الفلاني وهاكذا ولكل صندوق او متغير هناك نوع وتكلمنا عن هذه الأنواع في مقال الدرس الرابع انواع البيانات من دورة لغة البرمجة بايثون يمكنكم قراءة المقال بالضغط هنا لماذا تم تسميتها متغيرات اسمها متغيرات لأنها يمكن ان تتغير قيمتها على سبيل المثال متغير بأسم a قيمته الأن hasan يمكن تبديل قيمته وجعلها nour او حتى يمكن جعلها رقم ليس هناك فرق   ماذا نستفيد من تعلم او استعمال المتغيرات   الأستفاد من المتغيرات كثيرة ولاكن سوف اذكر بعضها 1. عدم تكرار النصوص  2. عدم ضياع بيانات في البرنامج 3. تسهيل كتابة البرامج  والأن ماذا اعني بعدم تكرار النصوص لفترض انك تريد كتابة جملة طويلة مثل جملة   Welcome to the so-and-so to learn so-and-so things وانت تريد ان تستخدم هذه الكلمة في عدة اماكن من البرنامج اذن انت سوف تطر الى كتاب...