Python قائمة الفرز () مع الأمثلة

ما هي طريقة الفرز () في Python?

وظيفة الترتيب في 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']

شرح الكود:

  • القائمة أعلاه عبارة عن قائمة سلسلة محددة عشوائيًا.
  • وظيفة الفرز 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)]

شرح الكود:

  • يتم تعريف المعلمة العكسية على أنها صحيحة لفرز الصف بترتيب تنازلي.
  • تأخذ الوظيفة المخصصة العنصر الثاني من الصف.
  • يتم استخدام هذا كمفتاح لوظيفة الفرز.

دعونا نلقي نظرة على المثال أدناه الذي يستخدم تعبير لامدا:

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 هي وظيفة مدمجة تحدد طول العنصر. يمكن استخدام الطول المحدد للفهرسة في وظيفة الفرز. للقيام بذلك، قمنا بتعيين لين ل Python المعلمة الرئيسية لوظيفة الفرز.

ما يلي Python يوضح الكود كيفية استخدام وظيفة Len مع وظيفة الفرز.

Python رمز:

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']

شرح الكود:

فرز عناصر القائمة باستخدام Len

  • يصبح طول العنصر فهرسًا للمعلمة الرئيسية لترتيب القائمة بترتيب تصاعدي.
  • تقوم دالة Len بتقدير طول كل عنصر موجود في القائمة الأساسية.
  • فهو يحتفظ بالعنصر الأقصر على الجانب الأيسر والعنصر الأكبر على الجانب الأيمن.
  • هنا، يبلغ طول الكلمتين alto وjava 4، ويتم ترتيبهما أولاً في القائمة، تليها Guru99، التي يبلغ طولها 6.

يوضح هذا المثال مفهوم المعلمة العكسية في دالة الفرز كما هو موضح أدناه: –

Python رمز:

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 رمز:

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}]

شرح الكود:

  • يتم إنشاء دالة معرفة من قبل المستخدم لإرجاع السنة
  • تأخذ المعلمة الرئيسية وظيفة معرفة من قبل المستخدم كمعيار.
  • ستقوم وظيفة الفرز بترتيب القائمة بترتيب تصاعدي بناءً على قيمة عنصر "السنة".

الفرق بين طريقة الفرز وطريقة الفرز في Python

قبل تلخيص الاختلافات، دعونا نفهم بناء جملة طريقة Sorted.

Python بناء الجملة:

sorted (list_name, reverse=…., key=..)

شرح الكود:

  • تقوم الدالة التي تم فرزها بفرز القائمة إما بترتيب تصاعدي أو ترتيب تنازلي.
  • تقبل الدالة ثلاث معلمات، منها معلمتان من النوع الاختياري ومعلمة واحدة من النوع المطلوب.
  • المعلمة 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

شرح الكود:

  • يتم تمرير القائمة الأصلية كمعلمة مطلوبة للوظيفة التي تم فرزها.
  • تقوم الطريقة 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)]

شرح الكود:

  • يتم فرز القائمة الأساسية باستخدام كل من وظيفة الفرز والوظيفة التي تم فرزها.
  • يتم فقدان القائمة الأساسية عند تطبيق وظيفة الفرز.
  • لا ينبغي تطبيق وظيفة الفرز على مجموعة البيانات الأصلية. ويجب استخدامه عندما يكون هناك نسخة من مجموعة البيانات الأصلية.
  • تحتفظ الدالة Sorted بالقائمة الأصلية. لا يتجاوز ذلك.
  • وهذا يوفر إمكانية تتبع أفضل وإدارة فعالة للبيانات.

وفي الختام

  • تساعد وظيفة الفرز في فرز قائمة رقمية وسلسلة في بيثون.
  • يمكن أن يساعد أيضًا في فرز الصفوف.
  • Revيعد erse وkey معلمات اختيارية للوظيفة.
  • إذا كانت هناك حاجة للحصول على قائمة منفصلة والحصول على القائمة الأصلية في نفس الوقت، فيجب استخدام وظيفة الفرز، وإلا فيجب استخدام وظيفة الفرز لتحقيق الاستخدام الأمثل للذاكرة.