كيفية فرز القوائم في بايثون

How Sort Lists Python



ستغطي هذه المقالة دليلًا حول قوائم الفرز في بايثون. كائن قائمة Python هو مجموعة من عنصر واحد أو أكثر مفصولة بفواصل. إنه كائن قابل للتكرار ويمكن الوصول إلى عناصره عن طريق التكرار على القائمة باستخدام عبارات التكرار والتعبيرات الأخرى. يمكنك فرز قائمة Python باستخدام طرق الفرز والفرز ، وكلاهما موضح في المقالة. تم اختبار جميع عينات الكود في هذه المقالة باستخدام Python 3.9.5 في Ubuntu 21.04.

طريقة الفرز

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







ال= [2و 8و 6و 4]

ال.نوع()

مطبعة (ال)

بعد تشغيل نموذج الكود أعلاه ، يجب أن تحصل على الإخراج التالي:



[2و 4و 6و 8]

تحدد العبارة الأولى في نموذج التعليمات البرمجية قائمة. بعد ذلك ، يتم استدعاء طريقة الفرز في القائمة. عند طباعة القائمة ، يمكنك رؤية أنه تم تغيير ترتيب القائمة الأصلية.



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





ال= [2و 8و 6و 4]

ال.نوع()

ال.يعكس()

مطبعة (ال)

بعد تشغيل نموذج الكود أعلاه ، يجب أن تحصل على الإخراج التالي:

[8و 6و 4و 2]

تعمل الطريقة العكسية أيضًا على تغيير قائمة Python في نفس المكان دون إنشاء قائمة جديدة.



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

ال= ['س'و 'إلى'و 'مع'و '4'و '#']

ال.نوع()
مطبعة (ال)

بعد تشغيل نموذج الكود أعلاه ، يجب أن تحصل على الإخراج التالي:

['#'و '4'و 'إلى'و 'س'و 'مع']

يمكنك أيضًا استخدام الطريقة العكسية في قائمة تحتوي على عناصر سلسلة.

ال= ['س'و 'إلى'و 'مع'و '4'و '#']

ال.نوع()

ال.يعكس()

مطبعة (ال)

بعد تشغيل نموذج الكود أعلاه ، يجب أن تحصل على الإخراج التالي:

['مع'و 'س'و 'إلى'و '4'و '#']

طريقة الفرز

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

قائمة 1= ['س'و 'إلى'و 'مع'و '4'و '#']

قائمة 2= مرتبة(قائمة 1)

مطبعة (قائمة 1وقائمة 2)

بعد تشغيل نموذج الكود أعلاه ، يجب أن تحصل على الإخراج التالي:

['س'و 'إلى'و 'مع'و '4'و '#'] ['#'و '4'و 'إلى'و 'س'و 'مع']

يمكنك أن ترى في الإخراج أن list1 سليمة وأن list2 لديها الآن عناصر مرتبة. يمكنك أيضًا استخدام الطريقة العكسية في القائمة 2 لتغيير منهجية الترتيب الخاصة بها.

الحجة العكسية

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

قائمة 1= ['س'و 'إلى'و 'مع'و '4'و '#']

قائمة 2= مرتبة(قائمة 1ويعكس=حقيقي)

مطبعة (قائمة 1وقائمة 2)

بعد تشغيل نموذج الكود أعلاه ، يجب أن تحصل على الإخراج التالي:

['س'و 'إلى'و 'مع'و '4'و '#'] ['مع'و 'س'و 'إلى'و '4'و '#']

استخدام الوظيفة الرئيسية لتحديد المنطق الخاص بك لفرز عناصر القائمة

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

قائمة 1= ['abcde'و 'xyz'و 'ijkl']

قائمة 2= مرتبة(قائمة 1ومفتاح=لين)

مطبعة (قائمة 1وقائمة 2)

قائمة 1.نوع(مفتاح=لين)

مطبعة (قائمة 1)

بعد تشغيل نموذج الكود أعلاه ، يجب أن تحصل على الإخراج التالي:

['abcde'و 'xyz'و 'ijkl'] ['xyz'و 'ijkl'و 'abcde']

['xyz'و 'ijkl'و 'abcde']

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

يمكنك أيضًا استخدام الوظيفة المخصصة الخاصة بك أو دالات lambda أحادية السطر التي ترجع قيمة تعبير واحد. ألقِ نظرة على نموذج الكود أدناه حيث تحتوي القائمة على مجموعات من المخزون الحالي لصناديق الفاكهة:

قائمة 1= [('مانجو'و 99)و ('البرتقالي'و 51)و ('موز'و 76)]

قائمة 1.نوع(مفتاح=لامداالجرد: الجرد[1])

مطبعة (قائمة 1)

بعد تشغيل نموذج الكود أعلاه ، يجب أن تحصل على الإخراج التالي:

[('البرتقالي'و 51)و ('موز'و 76)و ('مانجو'و 99)]

يتم توفير وظيفة lambda مع جرد وسيطة ، وهو كل عنصر من عناصر القائمة في شكل tuple. ثم تقوم بإرجاع العنصر الثاني من كل مجموعة كمفتاح (في الفهرس 1). تقوم وظيفة الفرز بعد ذلك بفرز كل المجموعات حسب العنصر الثاني بترتيب تصاعدي. يمكنك أيضًا استخدام الدالة العكسية أو الوسيطة العكسية في النتيجة النهائية لعكس ترتيب الفرز.

استنتاج

هذه بعض الطرق التي يمكنك من خلالها فرز محتويات قائمة قابلة للتكرار في Python. تسمح لك الوسيطة الرئيسية بكتابة منطق الفرز المخصص الخاص بك ، وهو مناسب للتطبيقات التي قد يكون لها احتياجات مختلفة عن طرق الفرز المضمنة.