مرتب سازی داده ها یکی از رایج ترین کارها هنگام کار با پایتون است. برای مثال، ممکن است بخواهید لیستی از اعضای تیم را بر اساس نام یا لیستی از پروژه ها را به ترتیب اولویت مرتب کنید. در این مقاله با ما همراه باشید تا شما عزیزان را با نحوه مرتب سازی لیست در Python آشنا کنیم.
در پایتون، میتوانید یک لیست را با استفاده از متد ()list.sort یا تابع داخلی ()sorted مرتب کنید. تابع ()sorted یک لیست مرتب شده جدید ایجاد می کند، در حالی که متد ()list.sort، لیست را در جای خود مرتب می کند. تفاوت دیگر این است که تابع ()sorted روی هر شی قابل تکرار کار می کند. نحو ()sort و ()sorted به صورت دستور زیر است:
list.sort(key=function, reverse=Boolean)
sorted(iterable, key=function, reverse=Boolean)
کلمه کلیدی اختیاری آرگومان key و reverse به معنای زیر است:
عناصر لیست با استفاده از عملگر “less than” (<) مقایسه شده و به ترتیب صعودی مرتب می شوند. عملگر < از مقایسه رشته با عدد صحیح پشتیبانی نمی کند، بنابراین اگر لیستی حاوی رشته ها و اعداد صحیح دارید، عملیات مرتب سازی ناموفق خواهد بود. مثال زیر نحوه مرتب سازی لیست رشته ها را به ترتیب حروف الفبا نشان می دهد:
directions = ["north", "east", "south", "west"] directions.sort() print('Sorted list:', directions)
Sorted list: ['east', 'north', 'south', 'west']
اگر می خواهید لیست اصلی را بدون تغییر نگه دارید، از تابع ()sorted استفاده کنید:
directions = ["north", "east", "south", "west"] sorted_directions = sorted(directions) print('Sorted list:', sorted_directions)
Sorted list: ['east', 'north', 'south', 'west']
برای مرتب کردن لیست به ترتیب نزولی، آرگومان reverse را روی True تنظیم کنید:
directions = ["north", "east", "south", "west"] directions.sort(reverse=True) print('Sorted list:', directions)
Sorted list: ['west', 'south', 'north', 'east']
آرگومان key یک تابع را می پذیرد و به شما امکان می دهد عملیات مرتب سازی پیچیده تری را انجام دهید. ساده ترین مثال این است که عناصر را بر اساس طول آنها مرتب کنید:
directions = ["Arya", "Daenerys", "Jon", "Brienne"] directions.sort(key=len) print('Sorted list:', directions)
برای بازگرداندن تعداد کاراکترهای رشته که از آن به عنوان مقایسه کننده استفاده می شود ، از تابع ()len استفاده کنید:
Sorted list: ['Jon', 'Arya', 'Brienne', 'Daenerys']
همچنین می توانید یک تابع سفارشی ایجاد کنید و از آن به عنوان یک آرگومان کلیدی برای مقایسه استفاده کنید. در اینجا یک مثال نشان می دهد که چگونه لیستی از اعداد صحیح را بر اساس مجموع ارقام آنها مرتب کنید:
def sum_digits(num): digits = [int(x) for x in str(num)] return sum(digits) numbers = [23, 77, 19, 310, 219] numbers.sort(reverse=True, key=sum_digits) print('Sorted list:', numbers)
Sorted list: [77, 219, 19, 23, 310]
مثال دیگر استفاده از آرگومان کلیدی برای مرتب کردن یک لیست پیچیده است، مانند لیست tuples:
numbers = [(3, 14), (1, 61), (2, 71)] numbers.sort(key=lambda k: k[0]) print('Sorted list:', numbers)
از یک تابع ناشناس (lambda) استفاده کنید که اولین عنصر tuple را برمی گرداند. لیست بر اساس مقدار بازگشتی از تابع مرتب شده است:
Sorted list: [(1, 61), (2, 71), (3, 14)]
از همین رویکرد می توان برای مرتب کردن لیستی از فرهنگ لغت استفاده کرد:
elements = [ {'name': 'Germanium', 'number': 25, 'symbol': 'ge'}, {'name': 'Silver', 'number': 47, 'symbol': 'ag'}, {'name': 'Iron', 'number': 26, 'symbol': 'fe'}, ] elements.sort(key=lambda k: k['name']) print('Sorted list:', elements)
تابع lambda مقدار name key را برمیگرداند که برای مقایسه استفاده میشود:
Sorted list: [ {'name': 'Germanium', 'number': 25, 'symbol': 'ge'}, {'name': 'Iron', 'number': 26, 'symbol': 'fe'}, {'name': 'Silver', 'number': 47, 'symbol': 'ag'} ]
یک راه بهتر و سریعتر برای مرتبسازی یک تابع پیچیده، استفاده از توابع ماژول Operator است. به عنوان مثال:
from operator import itemgetter elements = [ {'name': 'Germanium', 'number': 25, 'symbol': 'ge'}, {'name': 'Silver', 'number': 47, 'symbol': 'ag'}, {'name': 'Iron', 'number': 26, 'symbol': 'fe'}, ] elements.sort(key=itemgetter('symbol')) print('Sorted list:', elements)
تابع Itemgetter مقدار نماد key را به دست می آورد:
Sorted list: [ {'name': 'Silver', 'number': 47, 'symbol': 'ag'}, {'name': 'Iron', 'number': 26, 'symbol': 'fe'}, {'name': 'Germanium', 'number': 25, 'symbol': 'ge'} ]
ما به شما نشان دادیم که چگونه لیست ها را در پایتون با استفاده از متد ()sort و تابع ()sorted مرتب کنید.
امیدواریم مطالب مورد پسند بوده و از آن بهره لازم را برده باشید. خوشحال میشویم نظرات و سوالات خود را در قسمت دیدگاه به اشتراک بگذارید و ما را در شتابان هاست همراهی کنید.😊