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

ما هي طريقة الفرز () في Python?
الدالة sort() في Python تساعد هذه الدالة في ترتيب قائمة تصاعديًا أو تنازليًا. ويمكن استخدامها لترتيب القوائم الرقمية، والصفوف، والنصوص. وهي لا تُنشئ قائمة جديدة، بل تُعدّل القائمة الأصلية أو تُرتّبها.
بناء جملة طريقة الفرز في Python
تتضمن دالة الفرز الصيغة التالية:
List.sort(key=…, reverse=…)
تحتوي دالة الفرز على معلَمَين اختياريين، وهما:
- المفتاح: - يستخدم لفرز دالة بناءً على معيار الفرز.
- Reverseتأخذ هذه الدالة القيمة إما "صحيح" أو "خطأ". إذا كانت القيمة "صحيح"، فإنها تقوم بترتيب القائمة تنازليًا.
فرز القائمة بترتيب تصاعدي باستخدام طريقة الفرز Python
In Python، تقوم وظيفة الفرز، افتراضيًا، بفرز أي قائمة بترتيب تصاعدي. تحتوي القائمة المُرتبة تصاعديًا على أدنى قيمة على الجانب الأيسر، وتأتي أعلى قيمة على الجانب الأيمن.
على سبيل المثال:
Python رمز:
base_list=["Google","Reliance","Guru99","Content","Syntax"] base_list.sort() print("the base list after sorting is",base_list)
الإخراج:
the base list after sorting is ['Content', 'Google', 'Guru99', 'Reliance', 'Syntax']
Code التفسير:
- القائمة أعلاه عبارة عن قائمة سلسلة محددة عشوائيًا.
- وظيفة الفرز Python يساعد في فرز القائمة العشوائية بترتيب تصاعدي، مع أقل طول للكلمة على الجانب الأيسر وأعلى طول للكلمة على الجانب الأيمن.
فرز القائمة بترتيب تنازلي
تسمح وظيفة الفرز أيضًا بفرز القائمة بترتيب تنازلي. يمكن تعريفه بأنه النظام حيث تبدأ القائمة بالقيمة الأعلى وتنتهي بالقيمة الأقل.
يتم تعيين المعلمة العكسية لوظيفة الفرز على أنها صحيحة للحصول على قائمة مرتبة بترتيب تنازلي.
لنلقِ نظرة على المثال التالي:
Python رمز:
base_list=[100,600,400,8000,50] base_list.sort() print("the base list after sorting is",base_list) # Reverse Order base_list.sort(reverse=True) print("the base list after REVERSE sorting is",base_list)
الإخراج:
the base list after sorting is [50, 100, 400, 600, 8000] the base list after REVERSE sorting is [8000, 600, 400, 100, 50]
ملاحظة: تأكد من أن تعيين كلمة "True" للمعلمة العكسية يبدأ بالحرف الكبير "T" لتجنب أي أخطاء في وقت التشغيل.
فرز قائمة من الصفوف باستخدام طريقة الفرز في Python
Python الصفوف هي مجموعات من العناصر غير القابلة للتغيير والتي تتبع تسلسلاً مرتبًا. Pythonيمكن استخدام دالة الفرز لفرز قائمة من الصف باستخدام دالة مخصصة وتعبير لامدا.
يمكن إنشاء دالة مخصصة بدون اسم، ويتم تمثيلها بتعبير لامدا. فيما يلي صيغة تعبير لامدا:
بناء الجملة:
Lambda arguments: expression
بناء الجملة أعلاه يعادل كود بايثون أدناه:
def name (arguments): return expression
فيما يلي مثال على مجموعة بيانات ودالة مخصصة لتوضيح كيف تساعد دالة الفرز ذات المعلمات الرئيسية في فرز العناصر في مجموعة البيانات:
Python رمز:
base_list = [('Alto', 2020, 500),('MSFT', 2022, 300),('Guru99', 2019, 1070)] def get_key(base_list): return base_list[2] base_list.sort(key=get_key,reverse=True) print("The change in base list is as follows",base_list)
الإخراج:
The change in the base list is as follows [('Guru99', 2019, 1070), ('Alto', 2020, 500), ('MSFT', 2022, 300)]
Code التفسير:
- يتم تعريف المعلمة العكسية على أنها صحيحة لفرز الصف بترتيب تنازلي.
- تأخذ الوظيفة المخصصة العنصر الثاني من الصف.
- يتم استخدام هذا كمفتاح لوظيفة الفرز.
دعونا نلقي نظرة على المثال أدناه الذي يستخدم تعبير لامدا:
Python رمز:
base_list = [('Alto', 2020, 500), ('MSFT', 2022, 300), ('Guru99', 2019, 1070)] base_list.sort(key=lambda base_list:base_list[2],reverse=True) print("The change in base list is as follows",base_list)
الإخراج:
The change in the base list is as follows [('Guru99', 2019, 1070), ('Alto', 2020, 500), ('MSFT', 2022, 300)]
التفسير:
- يساعدك تعبير lambda على فرز عناصر الصف من الأعلى إلى الأدنى باستخدام المفتاح باعتباره العنصر الثاني في الصف.
- سيقوم البرنامج بالتحقق من أعلى قيمة للعنصر الثاني من الصف.
فرز عناصر القائمة باستخدام Len كمعلمة رئيسية
الدالة Len هي دالة مدمجة تحدد طول العنصر. يمكن استخدام الطول المحدد للفهرسة في دالة الفرز. وللقيام بذلك، نقوم بتعيين قيمة Len إلى Python المعلمة الرئيسية لوظيفة الفرز.
ما يلي Python يوضح الكود كيفية استخدام وظيفة Len مع وظيفة الفرز.
Python Code:
base_list=["Alto", "Guru99", "Python", "Google", "Java"] base_list.sort(key=len) print("The sorted list based on length:",base_list)
الإخراج:
The sorted list based on length: ['Alto', 'Java', 'Guru99', 'Python', 'Google']
Code التفسير:
- يصبح طول العنصر فهرسًا للمعلمة الرئيسية لترتيب القائمة بترتيب تصاعدي.
- تقوم دالة Len بتقدير طول كل عنصر موجود في القائمة الأساسية.
- فهو يحتفظ بالعنصر الأقصر على الجانب الأيسر والعنصر الأكبر على الجانب الأيمن.
- هنا، يبلغ طول كلمتي "alto" و"java" أربعة أحرف، وهما مرتبان أولاً في القائمة، متبوعًا بـ Guru99، والتي يبلغ طولها 6.
يوضح هذا المثال مفهوم المعامل العكسي في دالة الفرز كما هو موضح أدناه:
Python Code:
base_list=["Alto", "Guru99", "Python", "Google", "Java"] base_list.sort(key=len,reverse=True) print("The sorted list based on length:",base_list)
الإخراج:
The sorted list based on length: ['Guru99', 'Python', 'Google', 'Alto', 'Java']
فرز عناصر القائمة باستخدام وظيفة محددة من قبل المستخدم كمعلمة رئيسية
يمكنك أيضًا استخدام دالة معرفة من قبل المستخدم كمعامل رئيسي لفرز قائمة. إليك مثال:
Python Code:
base_list = [{'Example':'Python','year':1991},{'Example':'Alto','year':2014},{'Example':'Guru99', 'year':1995},
{'Example':'Google','year':1985},{'Example':'Apple','year':2007},{'Example':'Emails','year':2010},]
def get_year(element):
return element['year']
base_list.sort(key=get_year)
print("The base list after sorting using explicit criteria",base_list)
الإخراج:
The base list after sorting using explicit criteria [{'Example': 'Google', 'year': 1985}, {'Example': 'Python', 'year': 1991}, {'Example': 'Guru99', 'year': 1995}, {'Example': 'Apple', 'year': 2007}, {'Example': 'Emails', 'year': 2010}, {'Example': 'Alto', 'year': 2014}]
Code التفسير:
- يتم إنشاء دالة معرفة من قبل المستخدم لإرجاع السنة
- تأخذ المعلمة الرئيسية وظيفة معرفة من قبل المستخدم كمعيار.
- ستقوم وظيفة الفرز بترتيب القائمة بترتيب تصاعدي بناءً على قيمة عنصر "السنة".
الفرق بين طريقة الفرز وطريقة الفرز في Python
بعد استعراض الأمثلة السابقة، من المفيد مقارنة أداتي الفرز مباشرةً. قبل تلخيص الاختلافات، دعونا نفهم بنية دالة الفرز (Sorted).
Python بناء الجملة:
sorted (list_name, reverse=…., key=..)
Code التفسير:
- تقوم الدالة التي تم فرزها بفرز القائمة إما بترتيب تصاعدي أو ترتيب تنازلي.
- تقبل الدالة ثلاث معلمات، منها معلمتان من النوع الاختياري ومعلمة واحدة من النوع المطلوب.
- المعلمة list_name مطلوبة عند استخدام الطريقة المصنفة.
- يمكن أن تأخذ الطريقة Sorted أي نوع من القائمة القابلة للتكرار كمدخل.
- المعلمات الرئيسية والمعلمات العكسية هي معلمات اختيارية في طريقة الفرز في Python.
فيما يلي مثال على استخدام وظيفة الفرز والفرز في Python:
Python رمز:
#Use of the Sorted method Base_list=[11,10,9,8,7,6] print("the original list is",Base_list) New_list=sorted(Base_list) print("the New list using sorted method is",New_list) #Use of the Sort method Base_list=[11,10,9,8,7,6] print("the original list is",Base_list) New_list=Base_list.sort() print("the New list using sort method is",New_list)
الإخراج:
the original list is [11, 10, 9, 8, 7, 6] the new list using the sorted method is [6, 7, 8, 9, 10, 11] the original list is [11, 10, 9, 8, 7, 6] the new list using the sort method is None
Code التفسير:
- يتم تمرير القائمة الأصلية كمعلمة مطلوبة للوظيفة التي تم فرزها.
- تقوم الطريقة Sorted بإرجاع قائمة جديدة إلى جانب القائمة الأصلية.
- نظرًا لعدم تمرير أي معلمات إضافية إلى الطريقة التي تم فرزها، يتم فرز القائمة الجديدة افتراضيًا بترتيب تصاعدي.
- لا تقوم وظيفة الفرز بإنشاء أي قائمة جديدة.
فيما يلي النقاط الرئيسية المتعلقة بأوجه التشابه والاختلاف:
| وظيفة مرتبة | وظيفة الفرز |
|---|---|
| وظيفة مرتبة في Python هي وظيفة مضمنة تأخذ list_name كمعلمة مطلوبة. | لا تأخذ وظيفة الفرز القائمة الأصلية كمعلمة. |
| تقوم الطريقة المصنفة بإرجاع قائمة جديدة | لا تقوم وظيفة الفرز بإرجاع قائمة جديدة |
| يجب استخدام الدالة المصنفة للقوائم القابلة للتكرار | يجب استخدام دالة الفرز للقوائم غير القابلة للتكرار. |
| لا يعدل القائمة الأصلية ويسمح لنا بالاحتفاظ بالبيانات الأصلية. | تقوم وظيفة الفرز بتعديل الوظيفة الأصلية وبالتالي تشغل مساحة أقل من الذاكرة |
متى يتم استخدام الطريقة المصنفة أو طريقة الفرز؟
دعونا نأخذ مثالاً يتطلب فرز بيانات العرق. يستخدم البرنامج رقم الصدرية والوقت المستغرق بالثواني لإنهاء السباق.
Python رمز:
from collections import namedtuple Base = namedtuple('Runner', 'bibnumber duration') blist = [] blist.append(Base('8567', 1500)) blist.append(Base('5234', 1420)) blist.append(Base('2344', 1600)) blist.append(Base('2342', 1490)) blist.append(Base('23444', 1620)) blist.append(Base('6674', 1906)) print("original list",blist) blist.sort(key=lambda x: getattr(x, 'duration')) top_five_result = blist[:5] print("Results using sort function",top_five_result) r_blist=sorted(blist,key=lambda x: getattr(x, 'duration')) top_five_result = r_blist[:5] print("Results using sorted function",top_five_result)
الإخراج:
original list [Runner(bibnumber='8567', duration=1500), Runner(bibnumber='5234', duration=1420), Runner(bibnumber='2344', duration=1600), Runner(bibnumber='2342', duration=1490), Runner(bibnumber='23444', duration=1620), Runner(bibnumber='6674', duration=1906)] Results using sort function [Runner(bibnumber='5234', duration=1420), Runner(bibnumber='2342', duration=1490), Runner(bibnumber='8567', duration=1500), Runner(bibnumber='2344', duration=1600), Runner(bibnumber='23444', duration=1620)] Results using sorted function [Runner(bibnumber='5234', duration=1420), Runner(bibnumber='2342', duration=1490), Runner(bibnumber='8567', duration=1500), Runner(bibnumber='2344', duration=1600), Runner(bibnumber='23444', duration=1620)]
Code التفسير:
- يتم فرز القائمة الأساسية باستخدام كل من وظيفة الفرز والوظيفة التي تم فرزها.
- يتم فقدان القائمة الأساسية عند تطبيق وظيفة الفرز.
- لا ينبغي تطبيق وظيفة الفرز على مجموعة البيانات الأصلية. ويجب استخدامه عندما يكون هناك نسخة من مجموعة البيانات الأصلية.
- تحتفظ الدالة Sorted بالقائمة الأصلية. لا يتجاوز ذلك.
- هذا يوفر أفضل tracالقدرة على إدارة البيانات بفعالية وكفاءة.

