از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
مرتب سازی لیست پایتون با sorted() و sort()
در این مقاله چندین روش برای مرتب سازی لیست ها در پایتون بررسی می کنیم.
پایتون با دو روش داخلی برای مرتبسازی لیستها و سایر اشیاء تکرارپذیر ارسال میشود. روش انتخاب شده برای یک مورد خاص اغلب بستگی دارد روی چه بخواهیم یک لیست را در محل مرتب کنیم یا یک نسخه جدید از لیست مرتب شده را برگردانیم.
با فرض اینکه بخواهیم لیستی را در جای خود مرتب کنیم، می توانیم از آن استفاده کنیم list.sort()
روش به شرح زیر است:
>>> pets = ('Turtle', 'Cat', 'Fish', 'Dingo')
>>> pets.sort()
>>> pets
('Cat', 'Dingo', 'Fish', 'Turtle')
به طور پیش فرض، لیست به ترتیب صعودی مرتب شده است. توجه کنید که چگونه لیست اصلی حیوانات خانگی پس از فراخوانی روش مرتب سازی تغییر می کند روی آی تی. اگر نمی خواهیم این اتفاق بیفتد، می توانیم از داخلی استفاده کنیم sorted()
تابعی برای برگرداندن یک لیست مرتب شده جدید در حالی که لیست اصلی را بدون تغییر باقی می گذارد:
>>> pets = ('Turtle', 'Cat', 'Fish', 'Dingo')
>>> new_pets = sorted(pets)
>>> new_pets
('Cat', 'Dingo', 'Fish', 'Turtle')
>>> pets
('Turtle', 'Cat', 'Fish', 'Dingo')
آرگومان معکوس می تواند برای مرتب کردن لیست ها به ترتیب نزولی استفاده شود:
>>> pets = ('Turtle', 'Cat', 'Fish', 'Dingo')
>>> new_pets = sorted(pets, reverse=True)
>>> new_pets
('Turtle', 'Fish', 'Dingo', 'Cat')
>>> pets.sort(reverse=True)
>>> pets
('Turtle', 'Fish', 'Dingo', 'Cat')
با این حال، سناریوهایی وجود دارد که ممکن است بخواهیم یک لیست را بر اساس آنها مرتب کنیم روی معیارهای سفارشی که ما تعریف می کنیم. برای مثال، ممکن است بخواهیم لیست حیوانات خانگی خود را بر اساس طول هر ورودی مرتب کنیم. در آن صورت پایتون آرگومان کلیدی را ارائه میکند که یک تابع تعریفشده توسط کاربر را برای تعیین معیارهای مرتبسازی میپذیرد:
>>> pets = ('Turtle', 'Cat', 'Fish', 'Dingo')
>>> get_len(x):
... return len(x)
...
>>> new_pets = sorted(pets, key=get_len)
>>> new_pets
('Cat', 'Fish', 'Dingo', 'Turtle')
>>> pets.sort(key=get_len)
>>> pets
('Cat', 'Fish', 'Dingo', 'Turtle')
حالا بیایید یک مثال کمی پیچیده تر را در نظر بگیریم. در اینجا فهرستی از فرهنگ لغتها داریم که حاوی دادههایی درباره گروهی از افراد است و میخواهیم فهرست را بر اساس سن افراد به ترتیب نزولی مرتب کنیم. برای این کار از هر دو استفاده می کنیم key
و reverse
آرگومان های کلمه کلیدی و همچنین یک تابع لامبدا پایتون. به این ترتیب می توانیم تابع مرتب سازی را ایجاد کنیم روی مگس، به جای اینکه از قبل آن را تعریف کنید:
>>> data = ( { 'name': 'Billy', 'age': 26, 'country': 'USA' }, { 'name': 'Timmy', 'age': 5, 'country': 'Australia' }, { 'name': 'Sally', 'age': 19, 'country': 'Costa Rica' }, { 'name': 'Tommy', 'age': 67, 'country': 'Serbia' } )
>>> new_data = sorted(data, key=lambda x: x('age'), reverse=True)
>>> new_data
({'country': 'Serbia', 'age': 67, 'name': 'Tommy'}, {'country': 'USA', 'age': 26, 'name': 'Billy'}, {'country': 'Costa Rica', 'age': 19, 'name': 'Sally'}, {'country': 'Australia', 'age': 5, 'name': 'Timmy'})
>>> data.sort(key=lambda x: x('age'), reverse=True)
>>> data
({'country': 'Serbia', 'age': 67, 'name': 'Tommy'}, {'country': 'USA', 'age': 26, 'name': 'Billy'}, {'country': 'Costa Rica', 'age': 19, 'name': 'Sally'}, {'country': 'Australia', 'age': 5, 'name': 'Timmy'})
توجه کنید که چگونه لغت نامه ها به ترتیب ظاهراً تصادفی شروع شده و سپس با مسن ترین افراد در ابتدا و جوان ترین افراد در لیست به پایان می رسند.
استفاده از توابع مرتبسازی و لامبدا به این روش به ما امکان میدهد به راحتی ساختارهای داده پیچیده را در یک خط کد مرتب کنیم. و ترتیب مرتب سازی را می توان با تنظیم به ترتیب نزولی تنظیم کرد reverse=True
.
درباره نویسنده
این مقاله توسط Jacob Stopak، مشاور و توسعهدهنده نرمافزار با علاقه به کمک به دیگران برای بهبود زندگی خود از طریق کد نوشته شده است. یعقوب خالق است کارت کد – ابزاری مناسب برای توسعه دهندگان برای جستجو، کپی و چسباندن قطعه کدهای رایج.
(برچسبها به ترجمه)# python
منتشر شده در 1403-01-21 12:10:15