منتديات الهندسة الكهربية والإلكترونية والميكاترونكس والكومبيوتر
هل تريد التفاعل مع هذه المساهمة؟ كل ما عليك هو إنشاء حساب جديد ببضع خطوات أو تسجيل الدخول للمتابعة.

الدرس الرابع القوائم Lists

اذهب الى الأسفل

الدرس الرابع  القوائم Lists  Empty الدرس الرابع القوائم Lists

مُساهمة من طرف Admin الخميس فبراير 18, 2016 11:41 am

الدرس الرابع القوائم Lists
سوف تحتاج إلى فهم موضوع آخر قبل أن تتمكن من البدء في كتابة البرامج بشكل جدي ، هذا الموضوع هو البيانات من نوع القائمة lists وابن عمه ، الصفوف (tuple) . القوائم والصفوف يمكن أن تحتوي على قيم متعددة ، مما يجعل من الاسهل كتابة البرامج التي تتعامل مع كميات كبيرة من البيانات. وحيث أن القوائم نفسها يمكن أن تحتوي على قوائم أخرى، يمكنك استخدامها لترتيب البيانات في الهياكل الهرمية .
في هذا الدرس ، سوف نناقش أساسيات القوائم. وسوف نتعرف أيضا عن الأساليب methods ، التي هي دوال مرتبطة إلى قيم من نوع بيانات معين .
وسوف نقوم بتغطية ، وبشكل موجز ، أنواع بيانات الصفوف (tuple) التى تشبه القائمة و السلسلة . وكيفية مقارنتها بقيم القوائم . في الدرس القادم سوف نتعرض لنوع بيانات "القاموس" dictionary .

البيانات نوع "القائمة" List
"القائمة" list هي القيمة التي تحتوي على قيم متعددة في ترتيب متسلسل . مصطلح "قيمة القائمة" list value يشير القائمة نفسها (وهي القيمة التي يمكن تخزينها في متغير أو تمريرها إلى دالة مثل أي قيمة أخرى)، وليست القيم داخل قيمة القائمة . قيمة القائمة تكون بالشكل التالى : 'cat', 'bat', 'rat', 'elephant'] ].
تماما كما يتم كتابة قيم السلسلة مع أحرف الاقتباس كعلامة إلى أين تبدأ وأين تنتهى السلسلة ، تبدأ القائمة بقوس الافتتاح مربع وتنتهي بقوس إغلاق مربع ، [] . تسمى القيم داخل القائمة أيضا "العناصر" items . يتم فصل العناصر بفواصل (أي أنها محدودة بفواصل).
مثال : أدخل ما يلي في وعاء البيئة التفاعلية:

الدرس الرابع  القوائم Lists  112

المتغير spam (1) لا تزال يخصص له قيمة واحدة فقط هى : قيمة القائمة list value . ولكن قيمة القائمة نفسها تحتوي على قيم أخرى. القيمة [] هي قائمة فارغة والتي لا تحتوي على قيم ، على غرار السلسلة الفارغة ''.

الحصول على القيم الفردية في قائمة بالرقم المسلسل(الفهرس) Indexes :

Admin
Admin

عدد المساهمات : 1194
تاريخ التسجيل : 28/01/2014

https://fathallaabdelaziz.forumarabia.com

الرجوع الى أعلى الصفحة اذهب الى الأسفل

الدرس الرابع  القوائم Lists  Empty رد: الدرس الرابع القوائم Lists

مُساهمة من طرف Admin الخميس فبراير 18, 2016 11:48 am

الحصول على القيم الفردية في قائمة بالرقم المسلسل(الفهرس) Indexes :
لنفرض أن لديك القائمة ['cat', 'bat', 'rat', 'elephant'] مخزنة في متغير اسمه spam . عندئذ يكون تقييم كود البايثون spam[0] بالقيمة 'cat' ، وتقييم spam[1] بالقيمة bat' ، وهلم جرا.
يطلق على العدد الصحيح داخل الأقواس المربعة الذي يلي القائمة "الفهرس" index . القيمة الأولى في القائمة تكون عند الفهرس 0، القيمة الثانية تكون عند الفهرس 1، والقيمة الثالثة تكون عند الفهرس 2، وهلم جرا . ويبين الشكل التالى قيمة القائمة المخصصة للقائمة spam ، جنبا إلى جنب مع بيان كل قيمة و الفهرس المقابل .

الدرس الرابع  القوائم Lists  212

مثال : اكتب التعبيرات التالية فى البيئة التفاعلية :

الدرس الرابع  القوائم Lists  312

لاحظ أن التعبير 'Hello ' + spam[0] (1) يقيم إلى 'Hello ' + 'cat' because spam[0] ومن ثم يقيم إلى السلسلة 'cat' . وهذا التعبير بدوره يقيم إلى قيمة السلسلة 'Hello cat' (2) .

مفسر البايثون سوف يعطيك رسالة خطأ "فهرس خطأ" IndexError إذا استخدمت فهرس يزيد عن عدد القيم فى قيمة القائمة .

الدرس الرابع  القوائم Lists  412

الفهارس indexes يمكن أن تكون فقط قيم أعداد صحيحة . فيما يلى مثال سوف يسبب الخطأ TypeError :

الدرس الرابع  القوائم Lists  512


القوائم يمكن أيضا أن تحتوى على قيم قوائم أخرى . القي فى قوائم القوائم هذه يمكن الوصول إليها باستخدام الفهارس المتعددة ، مثال :

الدرس الرابع  القوائم Lists  611

الفهرس الأول يشير إلى قيمة القائمة المستخدمة ، والفهرس الثانى يشير إلى القيمة ضمن قيمة القائمة. على سبيل المثال ، spam[0][1] prints 'bat' هى القيمة الثانية 1 في القائمة الأولى 0. إذا لم تستخدم سوى فهرس واحد، فإن البرنامج يطبع قيمةالقائمة الكاملة عند ذلك الفهرس .

الفهارس السالبة Negative Indexes :

Admin
Admin

عدد المساهمات : 1194
تاريخ التسجيل : 28/01/2014

https://fathallaabdelaziz.forumarabia.com

الرجوع الى أعلى الصفحة اذهب الى الأسفل

الدرس الرابع  القوائم Lists  Empty رد: الدرس الرابع القوائم Lists

مُساهمة من طرف Admin الخميس فبراير 18, 2016 11:53 am

الفهارس السالبة Negative Indexes :
فى حين تبدأ الفهارس من عند الصفر وتصاعديا ، يمكنك أيضا استخدام الأعداد الصحيحة السالبة للفهرس . القيمة (-1) تشير إلى الفهرس الأخير فى القائمة ، والقيمة (-2) تشير إلى الفهرس الثانى من النهاية ، وهلم جرا .
مثال : أدخل ما يلى فى البيئة التفاعلية ولاحظ النتائج :

الدرس الرابع  القوائم Lists  712

الحصول على القوائم الفرعية بالشرائح Getting Sublists with Slices :

Admin
Admin

عدد المساهمات : 1194
تاريخ التسجيل : 28/01/2014

https://fathallaabdelaziz.forumarabia.com

الرجوع الى أعلى الصفحة اذهب الى الأسفل

الدرس الرابع  القوائم Lists  Empty رد: الدرس الرابع القوائم Lists

مُساهمة من طرف Admin الخميس فبراير 18, 2016 11:56 am

الحصول على القوائم الفرعية بالشرائح Getting Sublists with Slices :
وكما أنه بالفهرس يمكن الحصول على قيمة واحدة من قائمة ، يمكن بالشريحة slice الحصول على العديد من القيم من القائمة ، في شكل قائمة جديدة . يتم كتابة الشريحة بين قوسين مربعين ، مثل الفهرس ، لكنها تملك اثنين من الأعداد الصحيحة مفصولة بنقطتين : . لاحظ الفرق بين الفهارس indexes والشرائح slices.
• spam[2] هي قائمة بفهرس (عدد صحيح واحد).
• spam[1:4] هي قائمة بشريحة (عددين صحيحين ).
في الشريحة ، العدد الصحيح الأول هو فهرس حيث تبدأ الشريحة. العدد الصحيح الثاني هو فهرس حيث تنتهي الشريحة. الشريحة تكون تتصاعد حتى ، ولكن لن تشمل ’ القيمة عند الفهرس الثاني . تقيم الشريحة بتقييم إلى قيمة قائمة جديدة.
مثال : أدخل ما يلي في وعاء البيئة التفاعلية ولاحظ نتيجة التشغيل :

الدرس الرابع  القوائم Lists  811

كاختصار، يمكنك ترك من واحد أو كلا من الفهارس على جانبي النقطتين في الشريحة. تاركا الفهرس الأول هو نفسه استخدام 0، أو بداية القائمة . تاركا الفهرس الثاني هو نفسه استخدام طول length القائمة، والتي سوف تكون شريحة إلى نهاية القائمة.
مثال : أدخل ما يلي في وعاء البيئة التفاعلية ولاحظ النتائج :

الدرس الرابع  القوائم Lists  911

الحصول على طول قائمة بالدالة len() :

Admin
Admin

عدد المساهمات : 1194
تاريخ التسجيل : 28/01/2014

https://fathallaabdelaziz.forumarabia.com

الرجوع الى أعلى الصفحة اذهب الى الأسفل

الدرس الرابع  القوائم Lists  Empty رد: الدرس الرابع القوائم Lists

مُساهمة من طرف Admin الخميس فبراير 18, 2016 11:59 am

الحصول على طول قائمة بالدالة len() :
الدالة len() سوف تقوم بإرجاع عدد من القيم التي تكون في قيمة القائمة التى تمرر إليها ، تماما مثل ما إذا كانت تعد عدد الحروف فى قيمة سلسلة .
مثال :أدخل ما يلي في وعاء البيئة التفاعلية ولاحظ النتيجة :

الدرس الرابع  القوائم Lists  1011

Admin
Admin

عدد المساهمات : 1194
تاريخ التسجيل : 28/01/2014

https://fathallaabdelaziz.forumarabia.com

الرجوع الى أعلى الصفحة اذهب الى الأسفل

الدرس الرابع  القوائم Lists  Empty رد: الدرس الرابع القوائم Lists

مُساهمة من طرف Admin الخميس فبراير 18, 2016 12:02 pm

تغيير القيم في قائمة بفهارس :
عادة يكون اسم المتغير على الجانب الأيسر من عبارة التعيين ، مثل spam = 42 . لكن ، يمكنك أيضا استخدام فهرس لقائمة لتغيير القيمة في هذا الفهرس . على سبيل المثال ، spam[1] = 'aardvark' تعني " تعيين القيمة في الفهرس 1 في القائمة spam إلى السلسة 'aardvark' " .
مثال : أدخل ما يلي في وعاء البيئة التفاعلية ولاحظ النتائج :

الدرس الرابع  القوائم Lists  1111


Admin
Admin

عدد المساهمات : 1194
تاريخ التسجيل : 28/01/2014

https://fathallaabdelaziz.forumarabia.com

الرجوع الى أعلى الصفحة اذهب الى الأسفل

الدرس الرابع  القوائم Lists  Empty رد: الدرس الرابع القوائم Lists

مُساهمة من طرف Admin الخميس فبراير 18, 2016 12:04 pm

تسلسل القائمة والنسخ المتماثل (تكرار) للقائمة :
العامل (+) يمكن أن يجمع بين قائمتين لإنشاء قيمة قائمة جديدة في بنفس الطريقة التي يتم بها التجميع بين سلسلتين إلى قيمة سلسلة جديدة . ويمكن أيضا استخدام العامل (*) مشغل مع قائمة وقيمة عدد صحيح لتكرار القائمة.
مثال :
أدخل ما يلي في وعاء البيئة التفاعلية ولاحظ النتائج :

الدرس الرابع  القوائم Lists  1211

Admin
Admin

عدد المساهمات : 1194
تاريخ التسجيل : 28/01/2014

https://fathallaabdelaziz.forumarabia.com

الرجوع الى أعلى الصفحة اذهب الى الأسفل

الدرس الرابع  القوائم Lists  Empty رد: الدرس الرابع القوائم Lists

مُساهمة من طرف Admin الخميس فبراير 18, 2016 12:07 pm

إزالة القيم من قوائم بعبارات del :
عبارة del سوف تحذف القيم في فهرس في القائمة . سيتم نقل كافة القيم في القائمة بعد القيمة المحذوفة لفهرس واحد لأعلى .
مثال : أدخل ما يلي في وعاء البيئة التفاعلية ولاحظ النتائج :

الدرس الرابع  القوائم Lists  1311

ويمكن أيضا استخدام عبارة del على متغير بسيط لحذفه ، كما لو كانت عبارة "عدم تخصيص" . إذا حاولت استخدام المتغير بعد حذفه، سوف تحصل على خطأ NameError لأن المتغير لم يعد موجودا.
في الواقع، لن تحتاج تقريبا تحتاج إلى حذف متغيرات بسيطة. غالبا تستخدم عبارة del لحذف القيم من القوائم.

Admin
Admin

عدد المساهمات : 1194
تاريخ التسجيل : 28/01/2014

https://fathallaabdelaziz.forumarabia.com

الرجوع الى أعلى الصفحة اذهب الى الأسفل

الدرس الرابع  القوائم Lists  Empty رد: الدرس الرابع القوائم Lists

مُساهمة من طرف Admin الخميس فبراير 18, 2016 10:13 pm

العمل مع القوائم :
عندما تبدأ فى كتابة البرامج ، فإنه من المغري خلق العديد من المتغيرات الفردية لتخزين مجموعة من القيم المماثلة . على سبيل المثال ، إذا أردت تخزين أسماء القطط ، قد تميل إلى كتابة الكود بالشكل التالى :

الدرس الرابع  القوائم Lists  113

هذه الوسيلة سيئة لكتابة التعليمات البرمجية . السبب ، وإذا كان عدد من القطط يتغير، فإن البرنامج لن يكون قادرا على تخزين المزيد من القطط أكثر من المتغيرات التى لديك . هذا النوع من البرامج أيضا ايكون به لكثير من التعليمات البرمجية المكررة أو المتطابقة تقريبا . أمعن النظر في كمية الكود المكررة في البرنامج التالي ، والذى يجب أن تدخله في محرر الملف وحفظه باسم allMyCats1.py:

الدرس الرابع  القوائم Lists  213

بدلا من استخدام متغيرات متعددة، ومتكررة ، يمكنك استخدام متغير واحد يحتوي على قيمة القائمة . على سبيل المثال ، فيما يلى نسخة جديدة ومحسنة من برنامج allMyCats1.py. يستخدم هذا الإصدار الجديد قائمة واحدة ويمكن تخزين أي عدد من القطط التي يكتبها المستخدم . اكتب الكود التالي في نافذة محرر الملف، واحفظه باسم allMyCats2.py:

الدرس الرابع  القوائم Lists  313

عندما تقوم بتشغيل هذا البرنامج ، فإن الخرج سوف يكون بالشكل التالى :

الدرس الرابع  القوائم Lists  413

الاستفادة من استخدام قائمة هي أن البيانات الخاصة بك الآن تكون في هيكل structure ، لذلك فإن يرنامجك يكون أكثر
مرونة في معالجة البيانات عن ماإذا كان به العديد من المتغيرات المتكررة.

استخدام حلقات for مع القوائم

Admin
Admin

عدد المساهمات : 1194
تاريخ التسجيل : 28/01/2014

https://fathallaabdelaziz.forumarabia.com

الرجوع الى أعلى الصفحة اذهب الى الأسفل

الدرس الرابع  القوائم Lists  Empty رد: الدرس الرابع القوائم Lists

مُساهمة من طرف Admin الخميس فبراير 18, 2016 10:18 pm

استخدام حلقات for مع القوائم
في الدرس الثانى ، تعلمت استخدام حلقات for لتنفيذ كتلة من التعليمات البرمجية عددا معينا من المرات. من الناحية الفنية ، حلقة for تكرر كتلة التعليمات البرمجية مرة واحدة لكل قيمة في قائمة أو قيمة لشبه قائمة م. على سبيل المثال، إذا قمت بتشغيل الكود التالى :

الدرس الرابع  القوائم Lists  513

خرج هذا البرنامج يكون بالشكل التالى :

الدرس الرابع  القوائم Lists  612

السبب هو أن العودة من range(4) هى قيمة لشبه قائمة list-like والتى يعتبرها مثل [0, 1, 2, 3] . البرنامج التالى له نفس خرج البرنامج السابق :

الدرس الرابع  القوائم Lists  713

ماالذى يقوم بفعله فى الواقع حلقة for السابقة من خلال بيانها مع المتغير i هو تعيينه للقيم المتعاقبة في القائمة
[0, 1, 2, 3] في كل تكرار .
تقنية البايثون الشائعة هي استخدام range(len(someList)) مع حلقة for للتكرار عبر فهارس قائمة . على سبيل المثال ، أدخل ما يلي في وعاء البيئة التفاعلية:

الدرس الرابع  القوائم Lists  812

استخدام range(len(supplies)) فى حلقة for المبينة يكون مفيد لأن التعليمات البرمجية في الحلقة يمكن أن تصل الفهرس (مثل المتغير i ) والقيمة في هذا الفهرس (مثل supplies[i] ) . والأفضل أن range(len(supplies)) سوف تتكرر خلال جميع فهارس supplies ، بغض النظر عن عدد العناصر التي تحتوي عليها.

العوامل in و not in :

Admin
Admin

عدد المساهمات : 1194
تاريخ التسجيل : 28/01/2014

https://fathallaabdelaziz.forumarabia.com

الرجوع الى أعلى الصفحة اذهب الى الأسفل

الدرس الرابع  القوائم Lists  Empty رد: الدرس الرابع القوائم Lists

مُساهمة من طرف Admin الخميس فبراير 18, 2016 10:27 pm

العوامل in و not in :
يمكنك تحديد ما إذا كانت قيمة فى in أو ليست فى not in قائمة باستخدام العوامل in , not in . . مثل العوامل الآخرى ، العوامل in , not in تستخدم في التعبير للاتصال بين قيمتين: قيمة للبحث في in قائمة والقائمة list حيث يمكن العثور عليها. وهذه التعبيرات تقيم إلى قيمة منطقية . أدخل ما يلي في وعاء البيئة التفاعلية:

الدرس الرابع  القوائم Lists  912

على سبيل المثال ، البرنامج التالي يتيح للمستخدم بكتابة اسم حيوان أليف pet ثم يتحقق لمعرفة ما إذا كان الاسم في قائمة الحيوانات الأليفة .
افتح نافذة جديدة محرر الملف ، أدخل التعليمة البرمجية التالية ، واحفظه باسم myPets.py:

الدرس الرابع  القوائم Lists  1012

الخرج يكون بالشكل التالى :

الدرس الرابع  القوائم Lists  1112

خدعة(براعة) التعيين المتعدد :
خدعة التعيين المتعدد هي اختصار والذى يمكنك من تعيين متغيرات متعددة مع القيم في قائمة في سطر واحد من التعليمات البرمجية . لذلك بدلا مما يلى :

الدرس الرابع  القوائم Lists  1212

يمكنك كتابة سطر الكود التالى :

الدرس الرابع  القوائم Lists  1312

عدد المتغيرات وطول القائمة يجب أن يكونا متساويان ، وإلا قلإن البايثون سوف يعطى الخطأ ValueError :

الدرس الرابع  القوائم Lists  1410

عوامل التعيين (التخصيص) المركبة :

Admin
Admin

عدد المساهمات : 1194
تاريخ التسجيل : 28/01/2014

https://fathallaabdelaziz.forumarabia.com

الرجوع الى أعلى الصفحة اذهب الى الأسفل

الدرس الرابع  القوائم Lists  Empty رد: الدرس الرابع القوائم Lists

مُساهمة من طرف Admin الخميس فبراير 18, 2016 10:31 pm

عوامل التعيين (التخصيص) المركبة :
عند تعيين قيمة للمتغير، فكثيرا ما استخدم المتغير بحد ذاته. على سبيل المثال ، فى الكود التالى يتم تعيين 42 إلى المتغير spam ، ثم بعد ذلك يتم زيادة القيمة الموجودة فى المتغير spam بواحد :

الدرس الرابع  القوائم Lists  1510

كاختصار (اختزال) ، يمكنك أن تستخدم عامل التخصيص المركب (+=) للقيام بنفس العمل كما يلى :

الدرس الرابع  القوائم Lists  1610

هناك عوامل تخصيص مركبة للعوامل الآنية +, -, *, /, % ، والموصوفة فى الجدول التالى :

الدرس الرابع  القوائم Lists  1710

العامل += يمكن أن بقوم بعمل تجميع (تسلسل) سلاسل وقوائم ، والعامل *= يمكنه القيام بعمل تكرار (مضاعفة) سلاسل وقوائم . أدخل الكود لتالى فى وعاء البيئة التفاعلية :

الدرس الرابع  القوائم Lists  1810

الطرق (الأساليب) Methods :

Admin
Admin

عدد المساهمات : 1194
تاريخ التسجيل : 28/01/2014

https://fathallaabdelaziz.forumarabia.com

الرجوع الى أعلى الصفحة اذهب الى الأسفل

الرجوع الى أعلى الصفحة

- مواضيع مماثلة

 
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى