sort در پایتون چیست؟ – به زبان ساده با مثال و کد
تابع sort در پایتون برای مرتبسازی عناصر لیستها به کار برده میشود. برای نمونه، فرض کنیم لیستی از اعداد صحیح به شکل [34, 1, 9, 5, 22] در اختیار داریم با اعمال کردن متد sort() بر روی آن لیست به شکل [1, 5, 9, 22, 34] مرتب میشود. مرتبسازی عناصر لیست در پایتون جزو وظایف پرکاربرد و تکراری است. این تابع به شکل بهینه و در کمترین زمان، وظیفه مرتبسازی را انجام میدهد. متد sort() جزو متدهای لیست در پایتون است. یعنی نمیتوان از آن بر روی ساختارهای پیمایشپذیری مانند مجموعه یا تاپلها استفاده کرد.
- روش انجام مرتبسازی صعودی و نزولی لیستها را با کمک متد sort یاد میگیرید.
- با چند مورد از کاربردهای رایج متد sort در برنامههای پایتون آشنا میشوید.
- روش درست استفاده از پارامتر key را در متد sort میآموزید.
- با متد sorted نیز آشنا میشوید و روش کار با آن را یاد میگیرید.
- میتوانید عملکرد متد sorted را با متد sort مقایسه کنید.
- متوجه تفاوت بین دستورهای sort(reverse=True) و ()reverse میشوید.


در این مطلب از مجله فرادرس با متد sort در پایتون آشنا میشوید. ابتدا این متد را تعریف کرده و چند مورد از ویژگیهای مهم آن را توضیح میدهیم. سپس با کمک مثالهای سادهای روش استفاده از متد sort() و کاربردهای آن را بررسی میکنیم. نوشتهایم که چطور از sort() برای مرتبسازی معمولی یا سفارشی لیستهایی با ساختارهای پیچیده استفاده کنید. در بخشهای انتهایی مطلب هم متد sort() را با sorted() مقایسه میکنیم.
sort در پایتون چیست؟
تابع sort در پایتون برای مرتبسازی عناصر موجود در لیستها به کار برده میشود. این تابع میتواند عناصر درون لیست را به صورت صعودی یا نزولی مرتب کند. متد .sort() خروجی ندارد. یعنی اینکه وقتی بر روی لیستی اعمال میشود، بهجای ساخت لیست جدیدی از عناصر مرتب شده، تمام دادههای درون همان لیست را به شکل مرتب میچیند.
برای مرتبسازی لیستهای پایتون از متد .sort() کمک میگیریم. این متد تمام دادههای لیست را به صورت یکجا مرتب میکند. در ضمن هیچ خروجی ندارد. یعنی اگر بخواهیم لیست اصلی را در کنار نسخه مرتب شده آن حفظ کنیم، اول باید نسخه جدیدی از لیست اصلی بسازیم. سپس با کمک متد sort() آن را مرتب کنیم.

مرتبسازی صعودی با sort در پایتون
در حالت پیشفرض، متد sort() تمام عناصر لیست را به شکل صعودی مرتب میکند. در کادر پایین، نمونهای از مرتبسازی با کمک این متد را پیادهسازی کردهایم.
بعد از اجرای کدهای بالا، خروجی زیر تولید شده و در کنسول پایتون نمایش داده میشود.
[1, 5, 9, 22, 34]مرتبسازی نزولی با sort در پایتون
همینطور که در بالا گفتیم این متد به صورت پیشفرض تمام عناصر لیست را در حالت صعودی مرتب میکند. اما اگر بخواهیم که این عناصر به شکل نزولی مرتب شوند باید از آرگومان reverse=True در متد استفاده کنیم.
در کادر پایین روش استفاده از این آرگومان را نمایش دادهایم.
بعد از اجرای کدهای بالا، خروجی زیر تولید شده و در کنسول پایتون نمایش داده میشود.
[34, 22, 9, 5, 1]مرتبسازی سفارشی با استفاده از کلید
با کمک متد sort() میتوانیم ساختارهای داده پیچیدهتر را نیز مرتب کنیم. برای مثال، فرض کنید که باید لیستی از دیکشنریها را مرتب کنیم. برای انجام این کار از کلیدهای دیکشنریها کمک میگیریم. با کمک این کلیدها دادهها را هر طور که بخواهیم مرتب میکنیم. به منظور اجرای این عملیات باید از پارامتر key در متد sort() استفاده کنیم.
بعد از اجرای کدهای بالا، خروجی زیر تولید شده و در کنسول پایتون نمایش داده میشود.
[{'name': 'Alice', 'age': 25}, {'name': 'Bob', 'age': 30}]اگر بخواهیم که لیست اصلی بدون تغییر بماند باید از تابع sorted() کمک بگیریم. این تابع برعکس متد sort() با لیست اصلی کاری ندارد. در عوض در خروجی، نسخه مرتب شده و جدیدی از عناصر لیست اصلی را برمیگرداند. در بخشهای بعد بیشتر درباره sorted() توضیح دادهایم.

کیفیت عملکرد تابع sort در پایتون
از نظر زمانی تابع sort در پایتون عملکرد بسیار بهینهای دارد. این تابع از الگوریتم به نام «Timsort» استفاده میکند. هر چند در زمان کار با لیستهای خیلی بزرگ ممکن است که کارایی متد sort() کمی پایین بیاید. این مشکل وقتی بزرگتر میشود که متد sort() را بارها و بارها با کمک حلقههای پایتون یا در داخل اپلیکیشنهای تعاملی فراخوانی کنیم. در چنین موقعیتهایی شاید لازم باشد که رویکرد خود را تا جای ممکن ارتقا داده و بهینهسازی کنیم.
تا به این قسمت از مطلب، شناخت کاملی درباره متد sort در پایتون و روش کار با آن بدست آوردهاید. در ادامه با کمک مثالهای متنوع نکات فنی بیشتری را درباره این متد بررسی میکنیم. در صورت تمایل به مطالعه مطالبی مانند این مورد، پیشنهاد میکنیم که حتما اپلیکیشن مجله فرادرس را بر روی دستگاههای همراه خود نصب کنید.
برای نصب اپلیکیشن رایگان مجله فرادرس، کلیک کنید.
روش استفاده از reverse در متد sort
متد sort() به طور خاص برای کار بر روی ساختار پیمایشپذیر لیست طراحی شده است. این متد عناصر موجود در لیست را با توجه به پارامتر اختیاری reverse مرتب میکند. این پارامتر میتواند دو مقدار True و False داشته باشد.
اگر مقدار پارامتر reverse را در متد sort() مشخص نکنیم، به شکل پیشفرض، تمام عناصر لیست را به صورت صعودی مرتب میکند. در کادر پایین، سینتکس ساده متد sort() را با کمک مثال سادهای پیادهسازی کردهایم.
بعد از اجرای کدهای بالا، خروجی زیر تولید شده و در کنسول پایتون نمایش داده میشود.
[1, 2, 5, 9]اگر بخواهیم عناصر لیست را به صورت نزولی مرتب کنیم باید مقدار پارامتر reverse را برابر با True قرار بدهیم. در کادر زیر روش انجام این کار را با کمک مثال سادهای پیادهسازی کردیم.
بعد از اجرای کدهای بالا، خروجی زیر تولید شده و در کنسول پایتون نمایش داده میشود. البته این کد در ادامه کد بالا نوشته شده است.
[9, 5, 2, 1]کارایی مناسبت متد sort() برای مرتبسازی لیستهای پایتون آن را به یکی از بهترین و کاربردیترین گزینهها در زمان اجرای وظایف مربوط به مرتبسازی دادهها تبدیل کرده است.
| روش | کاربرد | ویژگی اصلی |
|---|---|---|
| مرتبسازی صعودی | مرتب کردن اعداد از کوچک به بزرگ | حالت پیشفرض sort() |
| مرتبسازی نزولی | مرتب کردن اعداد از بزرگ به کوچک | با reverse=True انجام میشود. |
| مرتبسازی سفارشی | مرتبسازی دادههای پیچیده مثل دیکشنری | با پارامتر key انجام میشود. |
یادگیری پایتون با کمک فیلمهای آموزشی
برای یادگیری پایتون ابزارها و منابع بسیار متنوعی در دسترس هستند. به همین دلیل این زبان به یکی از پرطرفدارترین زبانهای برنامه نویسی دنیا تبدیل شده است. منابع فراوان و رایگان کمک زیادی در یادگیری پایتون میکنند. به خصوص که مراحل اولیه یادگیری پایتون برای بیشتر افراد آسان است و خیلی سریع پیش میرود. اما وقتی وارد مباحث پیشرفتهتر میشوید، حتما به منابعی نیاز دارید که به شکل شفاف و با مثالهای عملی نکات مهم را آموزش بدهند. در این زمان وجود منابعی مانند فیلمهای آموزشی میتواند کمک بسیار زیادی کند. زیرا فیلمهای آموزشی نسبت به سایر منابع از کیفیت و تاثیرگذاری خیلی بیشتری برخوردار هستند.

فرادرس بزرگترین تولید کننده محتوای آموزشی آنلاین در کشور است. این دانشگاه آنلاین، تمرکز خاصی بر روی تولید فیلمهای مربوط به پایتون دارد. مطالب و فیلمهای آموزشی فرادرس از کیفیت بالا و محتوای متنوعی برخوردار هستند. در این فیلمها از مطالب بسیار ساده و ابتدایی گرفته تا مفاهیم بسیار پیشرفتهای مانند شبکههای عصبی و یادگیری ماشین، تدریس میشوند. استفاده از فیلمهای آموزشی فرادرس یکی از مقرونبهصرفهترین روشهای یادگیری است.
در پایین، چند مورد از فیلمهای آموزشی مربوط به این زبان را معرفی کردهایم.
- فیلم آموزش برنامه نویسی شبکه در پایتون از کدنویسی پایه تا پیشرفته
- فیلم آموزش کتابخانه های پایتون برای کار با اکسل
- فیلم آموزش مدیریت موجودی در زنجیره تامین با داده کاوی در پایتون + گواهینامه
- فیلم آموزش داکر با پایتون Python و SQL Server همراه با حل مثالهای عملی
- فیلم آموزش پردازش موازی در پایتون، کار با کتابخانه Thread و Async IO
در بخش بعد، چند مورد از کاربردهای مهم تابع sort() را بررسی میکنیم.
کاربردهای sort در پایتون
در این بخش از مطلب، چند مورد از رایجترین کاربردهای این متد را برای مرتبسازی دادهها بررسی میکنیم.
| کاربرد | توضیح ساده |
|---|---|
| سازماندهی دادهها | مرتب کردن دادهها برای جستجو و پردازش راحتتر |
| نمایش بهتر خروجی | خواناتر کردن اطلاعات برای کاربر |
| بهبود تجربه کاربری | کمک به درک سریعتر دادهها |
| فروشگاههای اینترنتی | مرتبسازی کالاها بر اساس قیمت یا نام |
| سیستم نمرهدهی | رتبهبندی دانشآموزان یا دانشجویان |
| مرتبسازی اشیای سفارشی | مرتب کردن کلاسها و اشیای مربوط به آنها |
در فهرست بالا با چند مورد از کاربردهای متد sort در لیستهای پایتون آشنا شدهاید. برای یادگیری هرچه بیشتر مفاهیم و ابزارهای پایتون لازم است که از مثالهای عملی کمک بگیرید. در صورت تمایل به یادگیری پایتون با کمک کدهای کاربردی، پیشنهاد میکنیم که فیلم آموزش برنامه نویسی پایتون، بررسی مثال های عملی در Python + گواهینامه را در فرادرس مشاهده کنید. لینک دسترسی مستقیم به این فیلم را در پایین نیز قرار دادهایم.
سازماندهی دادهها
مرتبسازی عناصر لیست در پایتون یکی از رایجترین وظایف برنامه نویسی است. زیرا اجرای عملیاتی مانند جستوجو به دنبال مقادیر یا پردازش دادهها بر روی لیستهای مرتب شده بسیار سادهتر است.
بعد از اجرای کدهای بالا، خروجی به شکل زیر تولید شده و در کنسول پایتون نمایش داده میشود.
[72, 85, 88, 91, 94]نکته ۱: اغلب اوقات، مرتبسازی خودش بخشی از الگوریتمهای بزرگتر است. الگوریتمهایی که برای مدیریت دادهها طراحی میشوند.
نکته ۲: اگر عناصر لیست داده شده از نوع مقادیر رشتهای باشند، متد sort() دادهها را بر اساس حروف الفبا مرتب میکند.
آماده سازی داده خروجی برای نمایش بهتر
مرتبسازی دادهها قبل از آماده کردن گزارش (برای ارائه یا نمایش خروجی برنامه) باعث میشود که دادههای نهایی خوانایی بیشتری پیدا کنند. در چنین مواقعی استفاده از متد sort() گزینه مناسبی برای اصلاح چیدمان دادههای موجود در ساختارهایی مانند لیست است.
بعد از اجرای کدهای بالا، خروجی زیر تولید شده و در کنسول پایتون نمایش داده میشود.
Registered participants: ['Ali', 'Fateme', 'Mostafa', 'Sara', 'Shadi']ارتقای تجربه کاربری
نمایش دادهها به شکل لیستهای مرتب شده به کاربران کمک میکند که به راحتی ساختار داده را درک کرده و متوجه آن بشوند.

برای نمونه میتوانیم از تکنیک برنامه نویسی تابعی مانند کاربرد تابع lambda در کنار متد sort() استفاده کنیم. با این روش منطق مرتبسازی مورد نظر خودمان را پیادهسازی میکنیم.
بعد از اجرای کدهای بالا، خروجی زیر تولید شده و در کنسول پایتون نمایش داده میشود.
Available products: ['apple', 'banana', 'cherry']مرتبسازی محصولات در فروشگاههای دیجیتال
فرض کنیم که در حال نوشتن برنامهای برای پلتفرمهای تجارت الکترونیک به زبان پایتون هستیم. در چنین نرمافزارهایی با کمک متد sort() میتوانیم تمام اجناس را بر اساس قیمت، نام یا ویژگیهای دیگر مرتب کنیم.
بعد از اجرای کدهای بالا، خروجی زیر تولید شده و در کنسول پایتون نمایش داده میشود.
Products sorted by price: [('Socks', 5), ('T-shirt', 20), ('Jeans', 45)]مثال بالا نشان میدهد که چطور میتوانیم برای تعیین ترتیب مرتبسازی از توابع استفاده کنیم. یعنی حتی این بخش از کد هم ساختاری پویا پیدا میکند. با توجه به خروجی تابع (که میتواند وابسته به نظر کاربر باشد) دادهها به صورت صعودی یا نزولی مرتب میشوند.
سیستمهای نمره دهی در مدرسه یا دانشگاه
نرمافزارهای آکادمیک یا تحصیلی با کمک مرتبسازی نمره دانشآموزان آنها را رتبهبندی میکنند. بیشتر اوقات، عملیات مربوط به مرتبسازی از شرایط مبتنی بر مقادیر Boolean به عنوان بخشی از منطق کار خود استفاده میکنند.
بعد از اجرای کدهای بالا، خروجی زیر تولید شده و در کنسول پایتون نمایش داده میشود.
Student rankings: [('Student B', 92), ('Student A', 88), ('Student C', 85)]مرتبسازی اشیا سفارشی
شی گرایی یکی از ویژگیهای پایتون است. با کمک شی گرایی میتوانیم اشیا سفارشی با مشخصات دلخواه خودمان را تعریف کنیم. این اشیا هم مانند هر شی دیگری قابل نگهداری در لیستها هستند. اما آیا میتوان با کمک متد sort() اشیا سفارشی ذخیره شده در لیست را مرتب کرد. پاسخ این سوال بله است. برای مرتبسازی این دسته از اشیا باید از پارامتر key در متد sort() کمک بگیریم. با کمک تابع lambda میتوانیم به این پارامتر، مقداردهی کنیم.

در تابع lambda میتوانیم از ویژگیهای اشیا تعریف شده برای ساخت معیارهای دلخواه و مرتبسازی سفارشی این اشیا استفاده کنیم.
بعد از اجرای کدهای بالا، خروجی زیر تولید شده و در کنسول پایتون نمایش داده میشود.
[Banana ($0.5), Cherry ($0.8), Apple ($1.2)]البته الگوریتمهای مختلفی برای مرتبسازی دادههای پیچیده وجود دارد. این الگوریتمها از پس هر نوع دادهای برمیآیند. به عنوان نمونه میتوانیم از مرتبسازی حبابی نام ببریم. الگوریتم مرتب سازی حبابی برای مرتب کردن رشتهای از اعداد یا سایر عناصر به صورت منظم استفاده میشود. در صورت تمایل به شناخت این الگوریتم و روش پیادهسازی و اجرای آن میتوانید مطلب مربوط آن را در مجله فرادرس مطالعه کنید.
البته در مطلب «مرتب سازی حبابی (Bubble Sort) در پایتون چیست» نیز به شکل تخصصی روش پیادهسازی این الگوریتم را در زبان برنامه نویسی پایتون بررسی کردهایم.
استفاده از پارامتر key در sort در پایتون
پارامتر key در متد sort() به برنامه نویسان کمک میکند که عملیات مرتبسازی را با توجه به معیارهای مدنظر خودشان تنظیم کنند. به پارامتر key باید تابع اختصاص بدهیم. وظیفه تابع این است که مقداری را برای مرتبسازی برگرداند. بیشتر اوقات در این قسمت از تابع lambda استفاده میکنیم.
این ویژگی در زمان اجرای پروژههای خاص بسیار مفید است. برای مثال اگر بخواهیم عناصر درون لیست را بر اساس طول هر کدام مرتب کنیم، از این پارامتر کمک میگیریم.
بعد از اجرای کدهای بالا، خروجی زیر تولید شده و در کنسول پایتون نمایش داده میشود.
['apple', 'banana', 'cherry']مرتبسازی ساختارهای پیچیده
متد sort در پایتون میتواند ساختارهای پیچیدهای مانند لیستی از دیکشنریها، تاپلها یا حتی لیستهای تو در تو را نیز مرتب کند. در چنین سناریوهایی از پارامتر key کمک میگیریم. مهمترین ویژگی این پارامتر آن است که به برنامه نویس کمک میکند تا معیاری بر اساس شرایط دلخواه برای مرتبسازی تعریف کند. برای تعریف کردن معیارهای سفارشی، تابع lambda را به کار میبریم.
بعد از اجرای کدهای بالا، خروجی زیر تولید شده و در کنسول پایتون نمایش داده میشود.
Sorted list of lists: [[1, 2], [3, 4], [5, 6]]مقایسه بین sorted و sort در پایتون
وظیفه اصلی تابع sort() این است که دادههای درون لیست را تغییر بدهد. بنابراین خروجی ندارد، بلکه لیست اصلی را اصلاح میکند. اما پایتون تابع دیگری هم به نام sorted() دارد. این تابع عناصر هر شی پیمایشپذیری را که دریافت کند به صورت مرتب شده در لیست جدیدی ذخیره کرده و در خروجی برمیگرداند.

به این رفتار که لیست اصلی را بدون ساختن لیست جدید تغییر بدهیم در اصطلاح پایتون «In-Place» گفته میشود. یعنی میگوییم که تابع sort() از نوع توابع In-Place است. در عوض تابع sorted() به لیست اصلی دست نمیزند. یعنی ترتیب عناصر درون آن را تغییر نمیدهد. بلکه لیست جدیدی به صورت مرتب شده میسازد.
بعد از اجرای کدهای بالا، خروجی زیر تولید شده و در کنسول پایتون نمایش داده میشود.
Original: [5, 2, 9, 1]
Sorted: [1, 2, 5, 9]در جدول زیر به شکل کامل توابع sort() و sorted() را مقایسه کردهایم.
| ویژگی | sort() | sorted() |
|---|---|---|
| نوع | متد لیست | تابع داخلی پایتون |
| تغییر لیست اصلی | بله | خیر |
| خروجی | ندارد | لیست مرتب شده جدید |
| نوع عملکرد | In-Place | ساخت نسخه جدید |
| کاربرد | فقط روی لیست | هر شی پیمایشپذیر |
با کمک فرادرس، پیاده سازی پروژه های پایتون را یاد بگیرید
یادگیری پایتون زمانی واقعیتر میشود که همراه با اجرای پروژههای واقعی صورت بگیرد. فرادرس، بزرگترین و معتبرترین تولیدکننده محتوای آموزشی فارسی است. در این وبسایت مجموعه بزرگی از دورههای پایتون تولید و منتشر شدهاند. در بخشی از این دورهها مفاهیم پایه آموزش داده میشوند. اما در بخش دیگر با تمرکز بر پروژههای عملی تلاش شده است که مهارتهای برنامهنویسی افراد کاربردیتر شوند. پایتون در حوزههایی مانند پزشکی، هوش مصنوعی، دادهکاوی و امنیت سایبری کاربرد دارد. بنابراین فرادرس تلاش کرده است که آموزشهای پروژهمحور متنوعی را تولید کند و به افراد ارائه بدهد.
در پایین، چند مورد از فیلمهای آموزش پروژهمحور زبان پایتون را معرفی کردهایم.
- فیلم آموزش ساخت دستیار هوشمند با Ollama و پروتکل MCP به صورت پروژه عملی LLM + گواهینامه
- فیلم آموزش پروژه محور پایتون و لازاروس، ساخت ابزار امنیتی برای مدیران شبکه + گواهینامه
- فیلم آموزش ساخت چت روم با سوکت نویسی در پایتون، Socket Programming در Python
- فیلم آموزش پروژه محور پایتون، درباره ساخت بازی حافظه تصویری با کتابخانه Tkinter و Turtle + گواهینامه
- فیلم آموزش پروژه محور «پایتون» (Python) درباره ساخت Music Player
در صورت تمایل با کلیک بر روی تصویر زیر به صفحه اصلی این مجموعه آموزشی، هدایت شده و از فیلمهای پروژهمحور بیشتری دیدن کنید.

شباهت بین sort(reverse=True) و ()reverse
میدانیم که دستور sort(reverse=True) دادههای درون لیست را به ترتیب نزولی مرتب میکند. اما برای رسیدن به این نتیجه میتوانیم از متد reverse بعد از متد sort() هم استفاده کنیم.
متد reverse() میتواند تمام عناصر لیست را بعد از آن که به صورت صعودی مرتب شدند معکوس کند. در صورتی که معیارهای مرتبسازی به صورت پویا تغییر کنند، بیشتر از این روش استفاده میشود.
بعد از اجرای کدهای بالا، خروجی زیر تولید شده و در کنسول پایتون نمایش داده میشود.
[9, 5, 2, 1]جمعبندی
در این مطلب از مجله فرادرس با متد sort در پایتون آشنا شدهایم. این متد تمام عناصر موجود در لیست را به صورت صعودی (در حالت پیشفرض) مرتب میکند. متد sort() در خروجی None برمیگرداند. بنابراین نباید نتیجه این متد را به متغیر حاوی لیست تخصیص داد. اگر بخواهیم که ترتیب عناصر به شکل نزولی باشد باید از آرگومان reverse=True در متد کمک بگیریم. key پارامتر دیگری است که متد sort() قبول میکند. با کمک این متد میتوانیم از توابع برای تعریف معیار سفارشی مرتبسازی استفاده کنیم. با کمک این پارامتر میتوانیم لیستی از اشیا یا دیکشنریها را مرتب کنیم.
متد sort() فقط بر روی لیستها کار میکند. برای مرتبسازی سایر ساختارهای پیمایشپذیر مانند تاپل یا مجموعه باید از تابع درونی sorted() در پایتون استفاده کنیم. این تابع به عنوان جایگزینی برای متد sort() شناخته میشود. عملکرد دیگر تابع sorted() آن است که ساختار اصلی را دست نخورده نگهمیدارد و در خروجی، لیست جدیدی را با عناصر مرتب شده برمیگرداند.












