وبلاگ رسانگار
با ما حرفه ای باشید

سرور مجازی NVMe

مرتب سازی لیست پایتون با sorted() و sort()

0 27
زمان لازم برای مطالعه: 3 دقیقه


در این مقاله چندین روش برای مرتب سازی لیست ها در پایتون بررسی می کنیم.

پایتون با دو روش داخلی برای مرتب‌سازی لیست‌ها و سایر اشیاء تکرارپذیر ارسال می‌شود. روش انتخاب شده برای یک مورد خاص اغلب بستگی دارد روی چه بخواهیم یک لیست را در محل مرتب کنیم یا یک نسخه جدید از لیست مرتب شده را برگردانیم.

با فرض اینکه بخواهیم لیستی را در جای خود مرتب کنیم، می توانیم از آن استفاده کنیم 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

امتیاز شما به این مطلب
دیدگاه شما در خصوص مطلب چیست ؟

آدرس ایمیل شما منتشر نخواهد شد.

لطفا دیدگاه خود را با احترام به دیدگاه های دیگران و با توجه به محتوای مطلب درج کنید