كيفية فرز القوائم في بايثون
نشرت: 2022-03-30ستعلمك هذه المقالة كيفية فرز قائمة في بايثون.
في Python ، يمكنك استخدام طريقة sort () لفرز القائمة في مكانها. أو يمكنك استخدام وظيفة الفرز المضمنة () للحصول على نسخة مرتبة من القائمة.
ستتعلم في هذا البرنامج التعليمي:
- بناء جملة طريقة
sorted()
sort()
Sorted () - أمثلة التعليمات البرمجية لقوائم الفرز بترتيب تصاعدي وتنازلي
- تخصيص الفرز باستخدام المعلمة
key
- الفرق بين
sort()
مقابلsorted()
لنبدأ!
بناء جملة طريقة فرز بايثون ()
تعمل طريقة sort()
في قائمة Python. ويقوم بفرز القائمة في مكانها — وتعديل القائمة الأصلية.
صيغة طريقة sort()
في بايثون هي:
<list>.sort(reverse = True | False, key = <func>)
دعنا الآن نحلل بناء الجملة أعلاه.
-
<list>
هو أي كائن قائمة Python صالح. -
reverse
هو معلمة اختيارية تأخذ إما True أو False. - القيمة الافتراضية
reverse
هيFalse
، ويتم فرز القائمة بترتيب تصاعدي. امنحTrue
لفرز القائمة بترتيب تنازلي. -
key
هو أيضًا معلمة اختيارية يتم تعيينها على<func>
. - يمكن أن يكون
<func>
وظيفة مضمنة أو وظيفة محددة بواسطة المستخدم.
في القسم التالي ، ستبدأ في ترميز أمثلة بسيطة.
كيفية فرز قائمة بايثون بترتيب تصاعدي
ضع في اعتبارك nums
القائمة. لفرز القائمة بترتيب تصاعدي ، يمكنك استدعاء طريقة sort()
في القائمة.
قم بتشغيل مقتطف التعليمات البرمجية التالي.
nums = [25,13,6,17,9] nums.sort() print(nums) # Output: [6, 9, 13, 17, 25]
تم فرز قائمة nums
بترتيب تصاعدي ، وتم تعديل القائمة الأصلية. وهذا ما يسمى بالفرز الموضعي .
كيفية فرز قائمة بايثون بترتيب تنازلي
لفرز القائمة بترتيب تنازلي ، اضبط reverse
على True
، كما هو موضح أدناه.
nums = [25,13,6,17,9] nums.sort(reverse = True) print(nums) # Output: [25, 17, 13, 9, 6]
يمكنك أن ترى أن القائمة مرتبة الآن بترتيب تنازلي.
كيفية استخدام مفتاح مع طريقة فرز بايثون
في هذا القسم ، دعنا نستخدم المعلمة key
ونخصص الفرز.
هنا ، mod5()
هي دالة تأخذ الرقم x
، وترجع الباقي عندما يتم قسمة الرقم x
على 5.
def mod5(x): return x % 5
ونود استخدام الوظيفة المذكورة أعلاه key
.
الآن ، قم بتشغيل خلية التعليمات البرمجية التالية.
nums = [25,13,6,17,9] nums.sort(key = mod5) print(nums) # Output: [25, 6, 17, 13, 9]
يستغرق دقيقة لتحليل الإخراج.
لاحظ أنه بدلاً من الفرز العادي ، تقوم الآن بتخصيص الفرز وفقًا key
وهو mod5
.
- الرقم الذي يترك الحد الأدنى المتبقي عند القسمة على 5 يأتي أولاً الآن.
- والرقم الذي يترك الباقي الأكبر عند القسمة على 5 هو العنصر الأخير في القائمة التي تم فرزها.
للتحقق من هذه الحالة ، قم بتشغيل مقتطف الشفرة التالي.
nums = [25,13,6,17,9] for num in nums: print(f"{num} leaves remainder {num%5} when divided by 5") # Output 25 leaves remainder 0 when divided by 5 13 leaves remainder 3 when divided by 5 6 leaves remainder 1 when divided by 5 17 leaves remainder 2 when divided by 5 9 leaves remainder 4 when divided by 5
5 تقسم 25 بالضبط ، والباقي هو 0. إذن هذا هو العنصر الأول في القائمة المصنفة. 6 يترك الباقي 1 ، لذلك فهو العنصر الثاني ، وهكذا. 9 يترك الباقي 4 عند القسمة على 5 ، وهو العنصر الأخير في القائمة المصنفة.
بدلاً من تحديد وظيفة منفصلة ، يمكنك أيضًا استخدام وظائف lambda. في لغة بايثون ، لامدا هي وظائف مجهولة من سطر واحد. lambda args: يعيد التعبير التعبير المحسوب على args .
الآن ، دعنا نعيد كتابة الفرز أعلاه باستخدام تعبير lambda ، كما هو موضح أدناه.
nums = [25,13,6,17,9] nums.sort(key = lambda x:x%5) print(nums) # Output: [25, 6, 17, 13, 9]
لقد تعلمت حتى الآن كيفية فرز قائمة الأرقام. بعد ذلك ، دعنا نرى كيف يمكنك فرز قائمة سلاسل في Python.
كيفية فرز قائمة بايثون بالترتيب الأبجدي
في هذا القسم ، ستتعلم فرز قائمة من السلاسل - بأمثلة مستوحاة من هاري بوتر.
في مثالنا ، students
هم قائمة الطلاب في هوجورتس. ونرغب في تصنيفهم حسب الترتيب الأبجدي لأسمائهم.
عند فرز قائمة السلاسل ، يكون الفرز الافتراضي بالترتيب الأبجدي.
students = ["Harry","Ron","Hermione","Draco","Cedric"]
دعونا نطبع القائمة التي تم فرزها للتحقق من نتيجة الفرز.
students.sort() print(students) # Output ['Cedric','Draco', 'Harry', 'Hermione', 'Ron']
كيفية فرز قائمة Python بترتيب أبجدي عكسي
لفرز القائمة بترتيب أبجدي عكسي ، اضبط reverse
= True
، كما هو موضح في مقتطف الشفرة أدناه.
students.sort(reverse = True) print(students) # Output ['Ron', 'Hermione', 'Harry', 'Draco', 'Cedric']
من الناتج ، يمكنك أن ترى أن القائمة قد تم فرزها بالفعل بترتيب عكسي.
كيفية استخدام مفتاح المعلمة تخصيص الفرز
في هذا القسم ، دعنا نخصص الفرز باستخدام معلمة key
الاختيارية.
النظر في القائمة التالية ، houses
.
houses = [ {1:"Draco","house":"Slytherin"}, {2:"Harry","house":"Gryffindor"}, {3:"Cedric","house":"Hufflepuff"} ]
هنا ، houses
هي قائمة من القواميس. يحتوي كل قاموس على زوجين من قيم المفاتيح ، أحدهما يشير إلى أسماء الطلاب والآخر يشير إلى المنزل الذي ينتمون إليه.
الآن ، نود أن نفرز هذه القائمة بالترتيب الأبجدي للمنازل التي ينتمون إليها.
كما قد تكون خمنت الآن ، يجب علينا تعيين المعلمة key
لمنزل الطلاب المعينين.
لاسترداد منزل كل طالب ، يمكنك تحديد وظيفة returnHouse()
، كما هو موضح أدناه.
def returnHouse(student): return student['house']
تقوم هذه الوظيفة بإرجاع المنزل الذي ينتمي إليه الطالب المعين.
الآن ، يمكنك استدعاء طريقة sort()
في قائمة المنازل ، كما هو موضح.
houses.sort(key=returnHouse)
في الإخراج أدناه ، لاحظ كيف يتم فرز القائمة حسب المنزل وليس حسب أسماء الطلاب. لهذا السبب لدينا جريفندور ، وهافلباف ، وسليذرين - بترتيب أبجدي.
print(houses) # Output [{2: 'Harry', 'house': 'Gryffindor'}, {3: 'Cedric', 'house': 'Hufflepuff'}, {1: 'Draco', 'house': 'Slytherin'}]
لتحديد المعلمة key
وفقًا لذلك ، يمكنك أيضًا استخدام وظيفة lambda. لكل عنصر قائمة ، ترجع هذه الوظيفة المنزل لعنصر القائمة هذا.
قم بتشغيل خلية التعليمات البرمجية التالية للتحقق من ذلك.
houses.sort(key=lambda student:student["house"]) print(houses) # Output [{2: 'Harry', 'house': 'Gryffindor'}, {3: 'Cedric', 'house': 'Hufflepuff'}, {1: 'Draco', 'house': 'Slytherin'}]
في جميع الأمثلة حتى الآن ، استخدمت طريقة sort()
في القائمة. وأنت تعلم الآن أنه يعدل القائمة الأصلية.
ماذا لو كنت ترغب في الاحتفاظ بالقائمة الأصلية كما هي ولكن الحصول على نسخة مرتبة من القائمة؟
حسنًا ، في Python ، يمكنك استخدام الوظيفة sorted()
للقيام بذلك.
بناء جملة Python Sorted () Function
تأخذ الدالة sorted()
قائمة أو أي مجموعة كوسيطة. وتقوم بإرجاع نسخة مرتبة من القائمة - ولا يتم تعديل القائمة الأصلية.
صيغة الدالة sorted()
في Python هي:
<sorted_copy> = sorted(<list>, reverse = True | False, key = <func>)
لاحظ كيف أن بناء الجملة مشابه جدًا لطريقة sort()
التي رأيناها سابقًا.
-
<list>
هو أي كائن قائمة Python صالح وهو معلمة مطلوبة . -
reverse
key
هي معلمات اختيارية
ملاحظة : على عكس طريقة
sort()
التي تعمل فقط على القوائم ، يمكن استخدام دالةsorted()
لفرز أي لغة Python قابلة للتكرار ، مثل القوائم ، والسلاسل ، والقواميس.
كيفية فرز قائمة Python باستخدام دالة Sorted ()
# 1. في هذا المثال ، nums
هي قائمة بالأرقام.
يمكنك استدعاء الدالة nums
sorted()
باستخدام الأعداد كوسيطة. وإسنادها إلى قائمة sorted_nums1
.
nums = [25,13,6,17,9] sorted_nums1 = sorted(nums) print(sorted_nums1) # Output: [6, 9, 13, 17, 25]
في الإخراج أعلاه ، يمكنك أن ترى أنه تم فرز nums
بترتيب تصاعدي افتراضيًا.
لاحظ أيضًا أن أرقام القائمة الأصلية لم يتم تعديلها - لأن nums
sorted()
تُرجع قائمة جديدة. تم التحقق من هذا أدناه.
print(nums) # Output: [25, 13, 6, 17, 9]
# 2 . الآن ، عيّن المعامل الاختياري reverse
إلى True
واحصل على sorted_nums2
.
كما هو موضح في خلية الكود أدناه ، sorted_nums2
عبارة عن قائمة جديدة بالعناصر مرتبة بترتيب تنازلي.
sorted_nums2 = sorted(nums,reverse = True) print(sorted_nums2) # Output: [25, 17, 13, 9, 6]
# 3. في هذا المثال ، دعنا نعمل مع قائمة السلاسل.
كما هو الحال مع الأمثلة السابقة ، يؤدي استدعاء الدالة sorted()
إلى إرجاع قائمة جديدة. ويتم فرز العناصر حسب الترتيب الأبجدي.
fruits = ['pears','strawberry','apple','pineapple','blueberry'] sorted_fr1 = sorted(fruits) print(sorted_fr1) # Output: ['apple', 'blueberry', 'pears', 'pineapple', 'strawberry']
# 4. الآن ، دعنا نخصص الفرز باستخدام معلمة key
الاختيارية. اضبط key
على len
. سيؤدي هذا إلى فرز القائمة بناءً على طول السلاسل.
ملاحظة: في Python ، تأخذ وظيفة
len()
المضمنة أي شيء قابل للتكرار ، مثل القوائم ، والسلسلة ، والصفوف ، وما إلى ذلك. وتقوم بإرجاع طول ما يمكن تكراره.
تظهر السلسلة ذات أقصر طول أولاً في القائمة التي تم فرزها ، وتظهر السلسلة الأطول في نهاية القائمة التي تم فرزها.
fruits = ['pear','strawberry','apple','pineapple','blueberry'] sorted_fr2 = sorted(fruits,key=len) print(sorted_fr2) # Output: ['pear', 'apple', 'pineapple', 'blueberry', 'strawberry']
في الإخراج أعلاه ، الكمثرى هي أقصر سلسلة ، والفراولة هي أطول سلسلة.
فرز Python () الطريقة مقابل الدالة Sorted ()
لقد تعلمت حتى الآن كيفية استخدام طريقة sort()
بالإضافة إلى وظيفة sorted()
. في هذا القسم ، دعنا نعدد الاختلافات بين هاتين الطريقتين.
طريقة Python .sort () | دالة () مرتبة بيثون |
يفرز القائمة في مكانها — يعدل القائمة الأصلية | إرجاع قائمة مرتبة جديدة |
يعمل فقط مع قوائم بايثون | يعمل مع متكررات Python مثل القوائم والسلاسل والمجموعات الأخرى |
نوع الإرجاع None | إرجاع نسخة مرتبة من القابل للتكرار |
تلخيص لما سبق
آمل أن تكون قد وجدت هذا البرنامج التعليمي لقوائم Python مفيدًا.
دعنا نلخص بسرعة ما غطينا.
- استخدم القائمة .
- استخدم (list، reverse = True | False، key = <func>) للحصول على نسخة مرتبة من القائمة.
الآن بعد أن تعلمت كيفية فرز قوائم بايثون ، تعرف على قائمة الفهم في بايثون. أو يمكنك أيضًا تعلم كيفية التعامل مع الملفات أو العمل مع ملفات JSON في Python.
يمكنك تجربة الأمثلة المذكورة أعلاه في مترجم Geekflare Online Python.