داغ ترین ویدیو بابلز لرن : هک کلاس های مجازی توسط متین برونسی

ویژگی تصویر

مرتب سازی لیست ها در پایتون

  /  پایتون   /  مرتب سازی لیست ها در پایتون
بنر تبلیغاتی الف

در این بخش به بررسی نحوه مرتب سازی لیست ها در پایتون می پردازیم.

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

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

مثال برای تابع sorted در پایتون

برای مثال، فرض کنید می خواهید لیست زیر را به صورت صعودی مرتب کنید:

numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]

می توانید از کد زیر استفاده کنید:

numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
sorted_numbers = sorted(numbers)
print(sorted_numbers)

خروجی:

[1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]

همچنین برای مرتب سازی لیست به صورت نزولی، می توانید از کد زیر استفاده کنید:

numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
sorted_numbers = sorted(numbers, reverse=True)
print(sorted_numbers)

خروجی:

[9, 6, 5, 5, 5, 4, 3, 3, 2, 1, 1]

تابع sorted در تمامی نسخه‌های پایتون قابل استفاده است، از جمله Python 2 و Python 3. اما در Python 2، تابع sorted در زمانی که برای لیست‌های با اندازه بزرگ استفاده می‌شود، ممکن است باعث مشکلاتی مانند مصرف بیش از حد حافظه شود. این مشکل در Python 3 بهبود یافته و تابع sorted برای لیست‌های با اندازه بزرگ بهبود یافته است.

بنابراین، برای استفاده از تابع sorted در هر نسخه از پایتون، می توانید از آن استفاده کنید، اما بهتر است برای استفاده از آن در لیست‌های با اندازه بزرگ، از Python 3 استفاده کنید.

تابع sorted() با استفاده از پارامتر key

با استفاده از پارامتر key می‌توانید برای مرتب سازی لیست، تابعی را به عنوان معیار مرتب سازی اعمال کنید. به عبارت دیگر، این تابع، با استفاده از تابعی که در پارامتر key مشخص شده، لیست را مرتب می‌کند.

words = ['banana', 'apple', 'pear', 'grape']
sorted_words = sorted(words, key=len)
print(sorted_words)

خروجی:

['pear', 'apple', 'grape', 'banana']

مرتب سازی لیست ها با استفاده از تابع sort() در پایتون

تابع sort(): این تابع، به صورت مشابه با تابع sorted() عمل مرتب سازی را بر روی یک لیست انجام می‌دهد. اما بر خلاف sorted()، تغییری روی لیست اصلی اعمال می‌شود و خروجی تابع None است.

مثال

numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
numbers.sort()
print(numbers)

خروجی:

[1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]

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

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

تابع heapq.nsmallest() و heapq.nlargest()

این دو تابع، n کوچکترین و بزرگترین مقادیر را در یک لیست پیدا می‌کنند. به عبارت دیگر، با استفاده از این تابع‌ها می‌توان به جای مرتب کردن کل لیست، n کوچکترین و بزرگترین عناصر را پیدا کرد.

مثال

تماشا در حالت تمام صفحه

خروجی:

[1, 1, 2]
[9, 6, 5]

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

برای مرتب سازی لیست‌های شامل دیکشنری، می‌توانید از تابع sorted() با استفاده از پارامتر key استفاده کنید. با این کار، می‌توانید بر اساس یکی از فیلدهای دیکشنری، لیست را مرتب کنید.

به عنوان مثال، فرض کنید شما یک لیست از دیکشنری‌ها دارید که هر دیکشنری شامل نام، سن و ایمیل کاربر است. شما می‌خواهید لیست را بر اساس سن کاربران مرتب کنید. به این شکل می‌توانید کد بنویسید:

تماشا در حالت تمام صفحه

در این کد، تابع sorted() به همراه پارامتر key برای مرتب سازی لیست users بر اساس فیلد age در هر دیکشنری استفاده شده است. پارامتر key با استفاده از یک تابع lambda اعمال شده است که بر اساس مقدار فیلد age هر دیکشنری، لیست را مرتب می‌کند. خروجی این کد به شکل زیر خواهد بود:

[{'name': 'Jane', 'age': 20, 'email': 'jane@example.com'}, {'name': 'John', 'age': 25, 'email': 'john@example.com'}, {'name': 'Bob', 'age': 30, 'email': 'bob@example.com'}]

همانطور که مشاهده می‌کنید، لیست users بر اساس سن کاربران مرتب شده است.

آیا این مطلب برای شما مفید بود ؟

خیر
بله
بنر تبلیغاتی ج