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