Python - Sort Lists

مرتب کردن لیست بر اساس حروف الفبا و اعداد

شیء لیست دارای تابع شیء sort() است که لیست را بر اساس حروف الفبا و اعداد (alphanumerically) مرتب می‌کند. پیش فرض آن به صورت صعودی است.


thislist = ["orange", "mango", "kiwi", "pineapple", "banana"]
thislist.sort()
print(thislist)

خروجی:


thislist = [100, 50, 65, 82, 23]
thislist.sort()
print(thislist)

خروجی:

مرتب کردن لیست به صورت نزولی

برای مرتب کردن لیست به صورت نزولی از آرگومان با کلیدواژه reverse = True استفاده کنید.


thislist = ["orange", "mango", "kiwi", "pineapple", "banana"]
thislist.sort(reverse = True)
print(thislist)

خروجی:


thislist = [100, 50, 65, 82, 23]
thislist.sort(reverse = True)
print(thislist)

خروجی:

دلخواه کردن تابع sort

می‌توانیم با استفاده از آرگومان با کلیدواژه key = function تابع را آنچنان که می‌خواهیم تغییر دهیم.

تابع عددی را برمی‌گرداند که از آن جهت مرتب کردن لیست استفاده می‌شود (پایین‌ترین عدد اولین). در مثال زیر لیست بر اساس اینکه کدام عدد به 50 نزدیک‌تر است مرتب می‌شود.


def myfunc(n):
    return abs(n - 50)
thislist = [100, 50, 65, 82, 23]
thislist.sort(key = myfunc)
print(thislist)

خروجی:

مرتب کردن بدون حساس بودن به بزرگ و کوچک بودن حروف

به صورت پیش‌فرض تابع شیء sort() به بزرگ و کوچک بودن حروف حساس است که نتیجه آن مرتب کردن حروف بزرگ قبل از حروف کوچک است. در این حالت ممکن است نتایج غیرمنتظره‌ای را شاهد باشیم.


thislist = ["banana", "Orange", "Kiwi", "cherry"]
thislist.sort()
print(thislist)

خروجی:

خوشبختانه یک تابع داخلی وجود دارد که از آن می‌توانیم به عنوان key function در هنگام مرتب کردن یک لیست استفاده کنیم. بنابراین اگر یک تابع مرتب کننده غیرحساس به بزرگ و کوچک بودن حروف می‌خواهید از str.lower به عنوان key function استفاده کنید.


thislist = ["banana", "Orange", "Kiwi", "cherry"]
thislist.sort(key = str.lower)
print(thislist)

خروجی:

ترتیب عکس

تابع شیء reverse() ترتیب جاری عناصر را عکس می‌کند.


thislist = ["banana", "Orange", "Kiwi", "cherry"]
thislist.reverse()
print(thislist)

خروجی: