الانتقال إلى المحتوى الرئيسي

كيفية فرز صفيف في بيثون: دليل كامل

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

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

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

كما يوفر بيثون القدرة على تعيين وظيفة الفرز المخصصة باستخدام المعلمة الرئيسية في وظيفة فرزها () أو طريقة الفرز (). يمكن تعيين وظيفة مخصصة لأنواع البيانات المعقدة عند الفرز حسب حقل أو معيار معين مطلوب.

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

  1. فرز مصفوفة يدويا في بايثون
  2. استخدام وظائف الفرز المضمنة في بايثون
  3. سؤال وجواب
  4. كيف أقوم بفرز مجموعة من الأرقام بترتيب تصاعدي?
  5. كيف أقوم بفرز مجموعة من السلاسل بالترتيب الأبجدي?
  6. كيف أقوم بفرز مجموعة من الكائنات حسب سمة معينة?

فرز مصفوفة يدويا في بايثون

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

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

مثال على رمز فرز الفقاعة يدويا:

ديف بابل_سورت (صفيف):

ن = لين (صفيف)

لأني في النطاق (ن):

ل ي في النطاق (0 ، ن-ط-1):

إذا صفيف [ي] > صفيف [ي + 1] :

صفيف [ي] ، صفيف [ي + 1] = صفيف [ي + 1] ، صفيف [ي]

عودة صفيف

# مثال على استخدام

بلدي = [6, 4, 2, 9, 1]

فرز_أراي = فقاعة_فرز(بلدي _أراي)

طباعة (مصنفة)

إذا قمت بتشغيل هذا الرمز ، فسيظهر صفيف تم فرزه على الشاشة [1, 2, 4, 6, 9]. في هذه الحالة ، تأخذ وظيفة الفرز الفقاعي مصفوفة المصدر كمدخلات وتعيد مصفوفة مرتبة. تتكرر الحلقات المتداخلة من خلال جميع أزواج عناصر المصفوفة وإذا كانت العناصر بترتيب خاطئ ، يتم تبديلها. تتكرر العملية عدة مرات حيث توجد عناصر في المصفوفة.

خوارزمية الفرز التالية التي يمكن تنفيذها يدويا هي فرز التحديد. وهو يتألف من العثور على أصغر عنصر في المصفوفة ونقله إلى البداية. تتكرر هذه العملية للعناصر المتبقية حتى يتم فرز المصفوفة بالكامل.

مثال على رمز الفرز اليدوي:

اختيار مواطن_فرز (صفيف):

ن = لين (صفيف)

لأني في النطاق (ن):

أصغر = أنا

إلى عن على ي في النطاق (أنا + 1, ن):

إذا صفيف [ي] < صفيف [أصغر] :

أصغر = ي

صفيف [أنا] ، صفيف [أصغر] = صفيف [أصغر] ، صفيف [أنا]

عودة صفيف

# مثال على استخدام

بلدي = [6, 4, 2, 9, 1]

فرز_أراي = اختيار_فرز(بلدي _أراي)

طباعة (مصنفة)

عند تشغيل هذا الرمز ، ستظهر مصفوفة مرتبة أيضا على الشاشة [1, 2, 4, 6, 9]. تأخذ وظيفة التحديد الفرز صفيف المصدر كمدخلات وتعيد مصفوفة مرتبة. يقع أصغر عنصر في المصفوفة في حلقات متداخلة وينتقل إلى البداية (في الموضع الأول). تتكرر العملية مع كل عنصر لاحق حتى يتم فرز المصفوفة بأكملها.

في هذا القسم ، تم تقديم مثالين للفرز اليدوي لمصفوفة في بايثون: فرز الفقاعات وفرز الاختيار. هذه هي خوارزميات الفرز الأساسية التي هي مفيدة لتعلم أساسيات البرمجة والعمل مع المصفوفات.

استخدام وظائف الفرز المضمنة في بايثون

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

فيما يلي وظائف الفرز المضمنة الرئيسية في بايثون:

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

أرقام = [5, 2, 7, 1, 9]

فرز_أرقام = مرتبة (أرقام)

طباعة (أرقام مصنفة) # [1, 2, 5, 7, 9]

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

أرقام = [5, 2, 7, 1, 9]

أرقام.فرز()

طباعة (أرقام) # [1, 2, 5, 7, 9]

لاحظ أن استخدام طريقة الفرز () يغير القائمة الأصلية ، لذلك إذا كنت بحاجة إلى الحفاظ على الترتيب الأصلي للعناصر ، فمن الأفضل استخدام الفرز().

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

مشغل الاستيراد

الموظفين = [

{'اسم': 'جون' ، 'العمر': 27},

{'اسم': 'كيت' ، 'العمر': 25},

{'اسم': 'مايك' ، 'العمر': 30}

]

فرز_الموظفين=فرزها(الموظفين ، مفتاح = المشغل.إيتمجيتر ('العمر'))

طباعة (فرز_موظفين)

في هذا المثال ، نقوم بفرز قائمة قواميس الموظفين حسب المفتاح 'العمر' ، باستخدام عامل التشغيل الدالة.إيتمجيتر ('العمر') لتحديد قيمة مفتاح الفرز.

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

سؤال وجواب

كيف أقوم بفرز مجموعة من الأرقام بترتيب تصاعدي?

لفرز مجموعة من الأرقام في ترتيب تصاعدي في بيثون ، يمكنك استخدام وظيفة` فرزها ()'. على سبيل المثال:

كيف أقوم بفرز مجموعة من السلاسل بالترتيب الأبجدي?

لفرز مجموعة من السلاسل بالترتيب الأبجدي ، استخدم الدالة` فرزها ()'. مثال:

كيف أقوم بفرز مجموعة من الكائنات حسب سمة معينة?

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