خاصية sort() في بايثون هي دالة مُدمجة تُستخدم لترتيب عناصر القائمة (list) بشكل تصاعدي افتراضيًا. تُعدّل هذه الدالة القائمة الأصلية في مكانها، أي أنها تُعيد ترتيب العناصر مُباشرةً داخل القائمة دون إنشاء قائمة جديدة. لا تُرجع الدالة sort() أي قيمة، بل تُرتّب القائمة وتُحدّثها فقط.

هناك طريقتان رئيسيتان لترتيب القوائم في بايثون:

  1. list.sort(): تُرتّب القائمة في مكانها وتُعدّل القائمة الأصلية.
  2. sorted(list): تُنشئ قائمة مُرتّبة جديدة من عناصر القائمة الأصلية، دون تغيير القائمة الأصلية.

شرح مُفصّل لخاصية list.sort():

  • الاستخدام الأساسي:
Python
my_list = [3, 1, 4, 1, 5, 9, 2, 6]
my_list.sort()
print(my_list) # Output: [1, 1, 2, 3, 4, 5, 6, 9]
  • الترتيب التنازلي: يُمكن الترتيب تنازليًا باستخدام المعامل reverse=True:
Python
my_list = [3, 1, 4, 1, 5, 9, 2, 6]
my_list.sort(reverse=True)
print(my_list) # Output: [9, 6, 5, 4, 3, 2, 1, 1]
  • استخدام دالة key لتحديد معيار الترتيب: يُمكن استخدام دالة key لتحديد معيار مُخصّص للترتيب. على سبيل المثال، لترتيب قائمة من السلاسل النصية حسب طولها:
Python
my_strings = ["apple", "banana", "kiwi", "orange"]
my_strings.sort(key=len)
print(my_strings) # Output: ['kiwi', 'apple', 'banana', 'orange']

يُمكن أيضًا استخدام دوال lambda كـ key:

Python
my_strings = ["apple", "Banana", "kiwi", "orange"]
my_strings.sort(key=lambda s: s.lower()) # ترتيب بغض النظر عن حالة الأحرف
print(my_strings) # Output: ['apple', 'Banana', 'kiwi', 'orange']
  • ملاحظات هامة:

    • تُعدّل list.sort() القائمة الأصلية مباشرةً ولا تُرجع أي قيمة (None).
    • تُعتبر list.sort() أسرع قليلًا من sorted() إذا كانت البيانات المُراد ترتيبها موجودة بالفعل في قائمة، لأنها لا تحتاج لإنشاء قائمة جديدة.

مقارنة بين list.sort() و sorted():

الخاصيةlist.sort()sorted(list)
التعديلتُعدّل القائمة الأصلية في مكانها.تُنشئ قائمة مُرتّبة جديدة.
الإرجاعلا تُرجع أي قيمة (None).تُرجع قائمة مُرتّبة جديدة.
الاستخدامتُستخدم مع الكائنات من نوع list فقط.تُستخدم مع أي كائن قابل للتكرار (iterable).
السرعةأسرع قليلًا في حالة ترتيب قائمة موجودة.قد تكون أبطأ قليلًا بسبب إنشاء قائمة جديدة.

مثال يوضح الفرق:

Python
my_list = [3, 1, 4, 2]
sorted_list = sorted(my_list) # إنشاء قائمة جديدة مُرتّبة
print(my_list) # Output: [3, 1, 4, 2] (القائمة الأصلية لم تتغير)
print(sorted_list) # Output: [1, 2, 3, 4]

my_list.sort() # تعديل القائمة الأصلية
print(my_list) # Output: [1, 2, 3, 4]

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