الدالة list.sort()
في بايثون
يعمل هذا التابع على فرز القائمة في مكانها وذلك بإجراء مقارنة بين عناصر القائمة بواسطة العامل <
فقط.
البنية العامة
sort(*, key=None, reverse=False)
المعاملات
يأخذ هذا التابع معاملين اثنين ويمكن تمريرهما بواسطة الكلمة المفتاحية (معاملات مفتاحية فقط):
key
يحدد هذا المعامل دالة ذات وسيط واحد يجري تطبيقها على كل عنصر في القائمة قبل عقد المقارنة فيما بينها (مثل: key=str.lower
). يأخذ هذا المعامل القيمة الافتراضية None
والتي تعني أن عناصر القائمة ستُفرز على نحو مباشر دون حساب قيمة خاصة بالمفتاح.
ملاحظة: يمكن استخدام الأداة functools.cmp_to_key()
لتحويل الدالة cmp
في الإصدارات 2.x
إلى دالة مفتاحية.
reverse
يأخذ المعامل reverse
قيمة منطقية (بوليانية)، فإن كانت True
يجري فرز عناصر القائمة كما لو أنّ كل عملية مقارنة تقوم بها الدالة كانت معكوسة.
توضيح
لا يلغي هذا التابع الاستثناءات التي تنشأ أثناء عملية الفرز، بمعنى أنّه في حال حدوث أيّ خطأ عند إجراء عملية المقارنة، ستتوقّف عملية الفرز برمّتها (وقد لا تطرأ التعديلات على بعض أجزاء القائمة).
تعدّل هذه الدالة التسلسل في مكانه وذلك للاقتصاد في الموارد عند إجراء عملية الفرز على تسلسل كبير. ولا تعيد هذه الدالة التسلسل المفروز (استخدم الدالة sorted()
للحصول على نسخة جديدة من القائمة المفروزة).
تكون عملية الفرز مستقرّة إذا كانت تضمن عدم تغيير التسلسل النسبي للعناصر المتساوية، وهذا الأمر مفيد في عمليات الفرز المتعدّدة (مثل الفرز حسب القسم ثم الفرز حسب المرتّب الشهري).
أمثلة
يوضّح المثال التالي النتائج المعادة من استخدام الدالة sort() على أنواع مختلفة من القوائم:
>>> a = [5, 2, 3, 1, 4]
>>> a.sort()
>>> a
[1, 2, 3, 4, 5]
>>> a.sort(reverse = True)
>>> a
[5, 4, 3, 2, 1]
>>> b = ["A", "b", "c", "D"]
>>> b.sort()
>>> b
['A', 'D', 'b', 'c']
>>> b.sort(key = str.lower)
>>> b
['A', 'b', 'c', 'D']
>>> b.sort(reverse = True, key = str.lower)
>>> b
['D', 'c', 'b', 'A']