فرز القوائم في Python باستخدام دالة sort()

تعد القوائم (Lists) من الهياكل البيانية الأكثر استخدامًا في لغة البرمجة Python، حيث تسمح بتخزين مجموعة من العناصر في ترتيب معين. ولكن ماذا لو كنت بحاجة إلى ترتيب هذه العناصر بترتيب معين؟ هنا يأتي دور دالة sort()، التي توفر وسيلة مرنة وسهلة لفرز القوائم.

ما هي دالة sort() في Python؟

تعتبر دالة sort() واحدة من الدوال المدمجة في Python، التي تتيح للمبرمج فرز العناصر داخل قائمة بترتيب تصاعدي أو تنازلي. تدعم الدالة العديد من الأنواع البيانية، مثل الأعداد الصحيحة (integers)، السلاسل النصية (strings)، وحتى الكائنات المعرفة من قبل المستخدم.

في هذه المقالة، سنتناول كيفية استخدام sort()، خيارات الفرز المختلفة، بالإضافة إلى استكشاف بعض الأمثلة العملية التي توضح كيفية الاستفادة منها في برمجة Python.

فرز القوائم بترتيب تصاعدي باستخدام sort()

الترتيب التصاعدي يعني أن العناصر سيتم ترتيبها من الأصغر إلى الأكبر (من حيث القيمة)، وهو السلوك الافتراضي لدالة sort().

مثال 1: فرز قائمة من الأرقام

في المثال التالي، سنقوم بفرز قائمة تحتوي على أرقام بترتيب تصاعدي.


numbers = [10, 5, 3, 8, 2]
numbers.sort()

print(numbers) # الناتج سيكون: [2, 3, 5, 8, 10]

في هذا المثال، استدعاء الدالة sort() على القائمة يقوم بترتيب العناصر بترتيب تصاعدي. بعد الفرز، تصبح القائمة [2، 3، 5، 8، 10].

مثال 2: فرز قائمة من السلاسل النصية

يمكن أيضًا استخدام sort() لفرز قوائم من السلاسل النصية. يتم الفرز هنا بناءً على الترتيب الأبجدي للحروف.


names = ['علي', 'محمد', 'سارة', 'كريم']
names.sort()

print(names) # الناتج سيكون: ['سارة', 'علي', 'كريم', 'محمد']

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

فرز القوائم بترتيب تنازلي باستخدام sort()

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

مثال 3: فرز قائمة من الأرقام بترتيب تنازلي


numbers = [10, 5, 3, 8, 2]
numbers.sort(reverse=True)

print(numbers) # الناتج سيكون: [10, 8, 5, 3, 2]

في هذا المثال، تم استخدام reverse=True لفرز القائمة بترتيب تنازلي. بعد الفرز، يصبح الترتيب من الأكبر إلى الأصغر: [10، 8، 5، 3، 2].

مثال 4: فرز قائمة من السلاسل النصية بترتيب تنازلي


names = ['علي', 'محمد', 'سارة', 'كريم']
names.sort(reverse=True)

print(names) # الناتج سيكون: ['محمد', 'كريم', 'علي', 'سارة']

كما في المثال السابق، تم استخدام reverse=True لفرز القائمة النصية بترتيب تنازلي بناءً على الترتيب الأبجدي.

فرز القوائم باستخدام دالة sorted()

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

مثال 5: استخدام sorted()


numbers = [10, 5, 3, 8, 2]
sorted_numbers = sorted(numbers)

print(sorted_numbers) # الناتج سيكون: [2, 3, 5, 8, 10]
print(numbers) # الناتج الأصلي: [10, 5, 3, 8, 2]

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

استخدام المفاتيح المخصصة للفرز

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

مثال 6: فرز قائمة بناءً على طول السلاسل النصية


words = ['apple', 'banana', 'cherry', 'date']
words.sort(key=len)

print(words) # الناتج سيكون: ['date', 'apple', 'banana', 'cherry']

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

الخلاصة

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

بفهم دالة sort() واستخدامها بشكل صحيح، يمكنك تحسين فعالية البرامج التي تعتمد على القوائم في Python، سواء كانت تحتوي على أرقام، نصوص، أو أنواع بيانات أخرى.