Сортування означає впорядкування набору значень у порядку зростання або зменшення. У Python існують різні методи сортування значень. Ми можемо зберігати набір або групу значень, використовуючи різні структури даних, такі як список, кортежі, словники, що залежить від даних, які ми зберігаємо. Отже, у цій статті ми обговоримо деякі методи та критерії сортування даних у Python.
Метод Sorted().
Це попередньо визначений метод у Python, який сортує будь-які об’єкти.
Синтаксис:
sorted(iterable, key, reverse)>
У цьому методі ми передаємо 3 параметри, з яких 2 (ключ і зворотний) є необов’язковими, а перший параметр, тобто ітерований, може бути будь-яким ітерованим об’єктом. Цей метод повертає відсортований список, але не змінює вихідну структуру даних.
приклад 1:
Python3
# List> list_of_items>=> [>'g'>,>'e'>,>'e'>,>'k'>,>'s'>]> print>(>sorted>(list_of_items))> # Tuple> tuple_of_items>=> (>'g'>,>'e'>,>'e'>,>'k'>,>'s'>)> print>(>sorted>(tuple_of_items))> # String-sorted based on ASCII> # translations> string>=> 'geeks'> print>(>sorted>(string))> # Dictionary> dictionary>=> {>'g'>:>1>,>'e'>:>2>,>'k'>:>3>,>'s'>:>4>}> print>(>sorted>(dictionary))> # Set> set_of_values>=> {>'g'>,>'e'>,>'e'>,>'k'>,>'s'>}> print>(>sorted>(set_of_values))> # Frozen Set> frozen_set>=> frozenset>((>'g'>,>'e'>,>'e'>,>'k'>,>'s'>))> print>(>sorted>(frozen_set))> |
>
>
алфавіт у вигляді цифрВихід
['e', 'e', 'g', 'k', 's'] ['e', 'e', 'g', 'k', 's'] ['e', 'e', 'g', 'k', 's'] ['e', 'g', 'k', 's'] ['e', 'g', 'k', 's'] ['e', 'g', 'k', 's']>
приклад 2:
Використання попередньо визначеної функції як ключового параметра. Отже, другий параметр, тобто ключ використовується для сортування даної структури даних за певною попередньо визначеною функцією, наприклад тільки() або якусь визначену користувачем функцію. Він сортує значення в структурі даних на основі функції, переданої ключовому параметру.
Python3
# using key parameter with pre-defined> # function i.e. len()> list_of_items>=> [>'apple'>,>'ball'>,>'cat'>,>'dog'>]> print>(>'Sorting without key parameter:'>,>sorted>(list_of_items))> print>(>'Sorting with len as key parameter:'>,>sorted>(list_of_items, key>=>len>))> |
>
>Вихід
Sorting without key parameter: ['apple', 'ball', 'cat', 'dog'] Sorting with len as key parameter: ['cat', 'dog', 'ball', 'apple']>
приклад 3:
Використання визначеної користувачем функції для ключового параметра.
Python3
# using key parameter with user-defined> # function i.e. by_name> # using key parameter with user-defined> # function i.e. by_marks> # here is a list_of_tuples where the first> # item in tuple is the student name and the> # second item is his/her marks> list_of_items>=> [(>'Ramesh'>,>56>),(>'Reka'>,>54>),(>'Lasya'>,>32>),(>'Amar'>,>89>)]> # defining a user-defined function which returns> # the first item(name)> def> by_name(ele):> >return> ele[>0>]> # defining a user-defined function which returns> # the second item(marks)> def> by_marks(ele):> >return> ele[>1>]> print>(>'Sorting without key parameter:'>,>sorted>(list_of_items))> print>(>'Sorting with by_name as key parameter:'>,> >sorted>(list_of_items, key>=>by_name))> print>(>'Sorting with by_marks as key parameter:'>,> >sorted>(list_of_items, key>=>by_marks))> |
>
>
Вихід
Сортування без ключового параметра: [('Amar', 89), ('Lasya', 32), ('Ramesh', 56), ('Reka', 54)]
Сортування за допомогою by_name як ключового параметра: [(‘Amar’, 89), (‘Lasya’, 32), (‘Ramesh’, 56), (‘Reka’, 54)]
Сортування за допомогою by_marks як ключового параметра: [(‘Lasya’, 32), (‘Reka’, 54), (‘Ramesh’, 56), (‘Amar’, 89)]
Приклад 4:
Отже, 3-й параметр - зворотний який використовується для сортування ітерованого в порядку спадання або зменшення.
Python3
# using key parameter reverse> list_of_items>=> [>'geeks'>,>'for'>,>'geeks'>]> print>(>'Sorting without key parameter:'>,> >sorted>(list_of_items))> print>(>'Sorting with len as key parameter:'>,> >sorted>(list_of_items, reverse>=>True>))> |
>
>Вихід
Sorting without key parameter: ['for', 'geeks', 'geeks'] Sorting with len as key parameter: ['geeks', 'geeks', 'for']>
Приклад 5:
Використовуючи всі три параметри
Python3
# using by_name and by_marks as key parameter> # and making reverse parameter true> # here is a list_of_tuples where the first> # item in tuple is the student name and the> # second item is his/her marks> list_of_items>=> [(>'Ramesh'>,>56>), (>'Reka'>,>54>),> >(>'Lasya'>,>32>), (>'Amar'>,>89>)]> # defining a user-defined function which> # returns the first item(name)> def> by_name(ele):> >return> ele[>0>]> # defining a user-defined function which> # returns the second item(marks)> def> by_marks(ele):> >return> ele[>1>]> print>(>'Sorting without key and reverse:'>,>sorted>(list_of_items))> print>(>'Sorting with by_name as key parameter and reverse parameter as False:'>,> >sorted>(list_of_items, key>=>by_name, reverse>=>False>))> print>(>'Sorting with by_name as key parameter and reverse parameter as True:'>,> >sorted>(list_of_items, key>=>by_name, reverse>=>True>))> print>(>'Sorting with by_marks as key parameter and reverse parameter as False:'>,> >sorted>(list_of_items, key>=>by_marks, reverse>=>False>))> print>(>'Sorting with by_marks as key parameter and reverse parameter as True:'>,> >sorted>(list_of_items, key>=>by_marks, reverse>=>True>))> |
>
>
Вихід
Сортування без ключа і реверсу: [(«Амар», 89), («Лася», 32), («Рамеш», 56), («Река», 54)]
Сортування за допомогою by_name як ключового параметра та зворотного параметра як False: [(‘Amar’, 89), (‘Lasya’, 32), (‘Ramesh’, 56), (‘Reka’, 54)]
Сортування за допомогою by_name як ключового параметра та зворотного параметра як True: [('Reka', 54), ('Ramesh', 56), ('Lasya', 32), ('Amar', 89)]
Сортування за допомогою by_marks як ключового параметра та зворотного параметра як False: [(‘Lasya’, 32), (‘Reka’, 54), (‘Ramesh’, 56), (‘Amar’, 89)]
Сортування за допомогою by_marks як ключового параметра та зворотного параметра як True: [('Amar', 89), ('Ramesh', 56), ('Reka', 54), ('Lasya', 32)]
Метод Sort().
Цей метод за замовчуванням сортує список у порядку зростання, і ми можемо використовувати параметр reverse для сортування в порядку спадання. Цей метод змінює вихідний список і нічого не повертає.
приклад 1:
Python3
# creating a list of items> list_of_items>=> [>'geeks'>,>'for'>,>'geeks'>]> print>(>'Original list:'>, list_of_items)> # using the sort method to sort> # the items> list_of_items.sort()> # displaying the list> print>(>'Sorted list:'>, list_of_items)> |
>
>Вихід
Original list: ['geeks', 'for', 'geeks'] Sorted list: ['for', 'geeks', 'geeks']>
приклад 2:
Використання попередньо визначеної функції як основного параметра
Python3
# using key parameter with pre-defined> # function i.e. len()> list_of_items>=> [>'apple'>,>'ball'>,>'cat'>,>'dog'>]> print>(>'Original List:'>, list_of_items)> # using the len() as key parameter and> # sorting the list> list_of_items.sort(key>=>len>)> print>(>'Sorting with len as key parameter:'>, list_of_items)> |
>
>Вихід
Original List: ['apple', 'ball', 'cat', 'dog'] Sorting with len as key parameter: ['cat', 'dog', 'ball', 'apple']>
приклад 3:
Використання визначеної користувачем функції як основного параметра
Python3
# using key parameter with user-defined> # function i.e. by_name> # using key parameter with user-defined> # function i.e. by_marks> # defining a user-defined function which> # returns the first item(name)> def> by_name(ele):> >return> ele[>0>]> # defining a user-defined function which> # returns the second item(marks)> def> by_marks(ele):> >return> ele[>1>]> # here is a list_of_tuples where the first> # item in tuple is the student name and the> # second item is his/her marks> list_of_items>=> [(>'Ramesh'>,>56>), (>'Reka'>,>54>),> >(>'Lasya'>,>32>), (>'Amar'>,>89>)]> print>(>'original list:'>, list_of_items)> # sorting by key value as by_name function> list_of_items.sort(key>=>by_name)> print>(>'Sorting with by_name as key parameter:'>, list_of_items)> # here is a list_of_tuples where the first> # item in tuple is the student name and the> # second item is his/her marks> list_of_items>=> [(>'Ramesh'>,>56>), (>'Reka'>,>54>),> >(>'Lasya'>,>32>), (>'Amar'>,>89>)]> print>(>'original list:'>, list_of_items)> # sorting by key value as by_marks function> list_of_items.sort(key>=>by_marks)> print>(>'Sorting with by_marks as key parameter:'>, list_of_items)> |
>
>
Вихід
оригінальний список: [(«Рамеш», 56), («Река», 54), («Лася», 32), («Амар», 89)]
Сортування за допомогою by_name як ключового параметра: [(‘Amar’, 89), (‘Lasya’, 32), (‘Ramesh’, 56), (‘Reka’, 54)]
оригінальний список: [(«Рамеш», 56), («Река», 54), («Лася», 32), («Амар», 89)]
Сортування за допомогою by_marks як ключового параметра: [(‘Lasya’, 32), (‘Reka’, 54), (‘Ramesh’, 56), (‘Amar’, 89)]
Приклад 4:
Використання зворотного параметра
Python3
# using key parameter reverse> list_of_items>=> [>'geeks'>,>'for'>,>'geeks'>]> print>(>'original list:'>, list_of_items)> list_of_items.sort(reverse>=>True>)> print>(>'sorting with reverse parameter'>, list_of_items)> |
>
>Вихід
original list: ['geeks', 'for', 'geeks'] sorting with reverse parameter ['geeks', 'geeks', 'for']>