✍️ مرتبسازی فقط برای نمایش قشنگ داده نیست؛ گاهی شرط لازم الگوریتم بعدی است. sorted اعضا را مرتب میکند و یک فهرست تازه میسازد. ترتیب پیشفرض صعودی است و با reverse=True نزولی میشود. خود فهرست اولیه با این تابع تغییر نمیکند؛ این رفتار را با متد sort که همان فهرست را جابهجا میکند اشتباه نگیر.
scores = [12, 5, 20, 12]
ascending = sorted(scores)
descending = sorted(scores, reverse=True)
print(ascending) # [5, 12, 12, 20]
print(descending) # [20, 12, 12, 5]
print(scores) # [12, 5, 20, 12]
تکرارها حذف نمیشوند؛ مرتب کردن با یکتا کردن فرق دارد. برای فهرست خالی، خروجی تازه هم خالی است. در این بخش اول جهت ترتیب را یاد میگیریم و بعد با key معیار جداگانه میسازیم، مثلاً طول نام یا امتیاز یک رکورد.
خطای رایج، نوشتن result = scores.sort() است؛ مقدار برگشتی این متد None است و همزمان scores را تغییر میدهد. پیش از انتخاب ابزار، قرارداد تغییر دادن یا ندادن ورودی را بخوان. در پروژه رتبهبندی آخر دوره، حفظ ترتیب اولیه داده هنگام بررسی نتیجه مهم خواهد بود.
فعالیت شما
تفاوت sorted و list.sort را از مثال توضیح بده؛ صعودی پیشفرض و نزولی با reverse=True است، تکرارها باقی میمانند و sorted ورودی را تغییر نمیدهد. این گام خواندنی است.