مقدمه

پایتون چند روش مختلف برای سازماندهی داده‌های لیست در شرایط مختلف ارائه می‌دهد که در این درس به آنها می‌پردازیم. ابتدا نحوه‌ی مرتب‌کردن آیتم‌های لیست را خواهیم دید و سپس یاد می‌گیریم که چطور ترتیب نمایش آیتم‌های لیست را معکوس کنیم. در انتهای درس نیز خواهیم دید چطور می‌توانیم طول یک لیست یعنی تعداد آیتم‌های آن را پیدا کنیم.

مرتب‌سازی لیست‌ها

آیتم‌های یک لیست به همان ترتیبی که در لیست وارد شده‌اند، نمایش داده می‌شوند. اما این امکان وجود دارد که ترتیبی دهیم تا آیتم‌های لیست بر اساس ترتیب الفبایی نمایش داده شوند. این کار را به دو روش می‌توان انجام داد: یکی با استفاده از متد sort() که ترتیب آیتم‌های لیست را برای همیشه تغییر می‌دهد و دیگری با استفاده از تابع sorted() که آیتم‌های لیست را به شکل مرتب‌شده نمایش می‌دهد اما ترتیب اورجینال آنها را حفظ می‌کند.

مرتب‌سازی لیست با متد sort

گفتیم که مرتب‌سازی آیتم‌های لیست با استفاده از متد sort() باعث تغییر ترتیب آیتم‌ها برای همیشه می‌شود. اجازه دهید این موضوع را در قالب یک مثال بررسی کنیم. فرض کنید لیستی از برندهای اتومبیل داریم و می‌خواهیم آن را طوری مرتب کنیم که آیتم‌هایش را بر اساس ترتیب الفبایی نگه دارد.

Copy Icon python_lists.py
cars = ['bmw', 'audi', 'toyota', 'subaru']
cars.sort()
print(cars)

متد sort() کار مرتب‌سازی آیتم‌های لیست را به صورت دائمی انجام می‌دهد و بنابراین، ما دیگر راهی برای برگشتن به ترتیب قبلی نداریم. در واقع، این متد، لیست را ویرایش می‌کند.

['audi', 'bmw', 'subaru', 'toyota']
          

اگر مانند مثال زیر آرگومان reverse=True را به متد sort() بدهیم، آیتم‌های لیست در جهت معکوس مرتب می‌شوند.

Copy Icon python_lists.py
cars = ['bmw', 'audi', 'toyota', 'subaru']
cars.sort(reverse=True) 
print(cars)

و باز هم ترتیب آیتم‌ها برای همیشه تغییر می‌کند.

['toyota', 'subaru', 'bmw', 'audi']
          

مرتب‌سازی لیست با تابع sorted

اگر بخواهیم ترتیب اورجینال یک لیست را حفظ کنیم اما موقتاً یک ترتیب دیگر از آن ارائه دهیم، می‌توانیم از تابع sorted() استفاده کنیم. این تابع به ما امکان می‌دهد که یک لیست را با یک ترتیب مشخص نمایش دهیم اما ترتیب واقعی لیست را تغییر نمی‌دهد.

Copy Icon python_lists.py
cars = ['bmw', 'audi', 'toyota', 'subaru'] 
print("Here is the original list:")
print(cars) 
print("\nHere is the sorted list:") 
print(sorted(cars))
print("\nHere is the original list again:") 
print(cars)

نتیجه‌ی اجرای این کد به صورت زیر خواهد بود.

Here is the original list:
['bmw', 'audi', 'toyota', 'subaru'] 
Here is the sorted list: 
['audi', 'bmw', 'subaru', 'toyota']
Here is the original list again:
['bmw', 'audi', 'toyota', 'subaru']
          

تابع sorted() نیز می‌تواند مثل متد sort() یک آرگومان reverse=True دریافت کرده و نتیجتاً ترتیب نمایش آیتم‌های لیست را معکوس کند.

معکوس کردن ترتیب نمایش آیتم‌های لیست

دیدیم که با پاس کردن آرگومان reverse-True به متد sort() و تابع sorted() می‌توانیم ترتیبی دهیم که ترتیب آیتم‌ها پس از مرتب‌سازی الفبایی، معکوس شود. اما اگر بخواهیم ترتیب اورجینال یک لیست را بدون مرتب‌سازی الفبایی معکوس کنیم، به متدی به نام reverse() نیاز داریم.

Copy Icon python_lists.py
cars = ['bmw', 'audi', 'toyota', 'subaru'] 
print(cars) 

cars.reverse() 
print(cars)

نتیجه‌ی اجرای کد بالا به‌صورت زیر خواهد بود.

['bmw', 'audi', 'toyota', 'subaru'] 
['subaru', 'toyota', 'audi', 'bmw']
          

متد reverse() ترتیب آیتم‌های لیست را برای همیشه تغییر می‌دهد اما طبیعی است که با اجرای مجدد این متد روی لیست می‌توانیم دوباره به لیست اورجینال برگردیم.

پیدا کردن طول یک لیست

برای پیدا کردن طول یک لیست می‌توانیم به سادگی از تابع len() استفاده کنیم. لیست زیر متشکل از 4 عنصر است و بنابراین، تابع len() مقدار 4 را برمی‌گرداند.

>>> cars = ['bmw', 'audi', 'toyota', 'subaru']
>>> len(cars) 
4