Сортування списку Python ()

Метод sort () сортує елементи даного списку в певному порядку зростання або зменшення.

Синтаксис sort()методу:

 list.sort (ключ = …, зворотний = …)

Крім того, ви також можете використовувати вбудовану в Python функцію sorted () з тією ж метою.

 відсортовано (список, ключ = …, зворотний = …)

Примітка: Найпростіша різниця між sort()і sorted()полягає у: sort()зміні списку безпосередньо і не повертає жодного значення, тоді як sorted()не змінює список і повертає відсортований список.

параметри sort ()

За замовчуванням sort()не вимагає додаткових параметрів. Однак він має два необов'язкові параметри:

  • реверс - Якщо Trueвідсортований список перевернутий (або відсортований за спаданням)
  • ключ - функція, яка служить ключем для порівняння сортування

Повернути значення з sort ()

sort()Метод не повертає ніякого значення. Швидше, це змінює вихідний список.

Якщо ви хочете, щоб функція повертала відсортований список, а не змінювала початковий список, використовуйте sorted().

Приклад 1: Сортування заданого списку

 # vowels list vowels = ('e', 'a', 'u', 'o', 'i') # sort the vowels vowels.sort() # print vowels print('Sorted list:', vowels)

Вихідні дані

 Відсортований список: ('a', 'e', ​​'i', 'o', 'u')

Сортувати за спаданням

sort()Метод приймає reverseпараметр як додатковий аргумент.

Параметр reverse = Trueсортує список у порядку зменшення.

 list.sort(reverse=True)

Крім того sorted(), ви можете використовувати наступний код.

 sorted(list, reverse=True)

Приклад 2: Відсортуйте список у порядку зменшення

 # vowels list vowels = ('e', 'a', 'u', 'o', 'i') # sort the vowels vowels.sort(reverse=True) # print vowels print('Sorted list (in Descending):', vowels)

Вихідні дані

 Відсортований список (за спаданням): ('u', 'o', 'i', 'e', ​​'a')

Сортування за допомогою користувацької функції за допомогою клавіші

Якщо ви хочете власну реалізацію для сортування, sort()метод також приймає keyфункцію як необов’язковий параметр.

За результатами функції ключа ви можете сортувати даний список.

 list.sort(key=len)

В якості альтернативи для сортування:

 sorted(list, key=len)

Тут lenє вбудована функція Python для підрахунку довжини елемента.

Список сортується на основі довжини кожного елемента, від найменшого до найвищого.

Ми знаємо, що кортеж за замовчуванням сортується за допомогою першого параметра. Давайте розглянемо, як налаштувати sort()метод для сортування за допомогою другого елемента.

Приклад 3: Відсортуйте список за допомогою клавіші

 # take second element for sort def takeSecond(elem): return elem(1) # random list random = ((2, 2), (3, 4), (4, 1), (1, 3)) # sort list with key random.sort(key=takeSecond) # print list print('Sorted list:', random)

Вихідні дані

 Відсортований список: ((4, 1), (2, 2), (1, 3), (3, 4))

Візьмемо ще один приклад. Припустимо, у нас є перелік інформації про працівників офісу, де кожен елемент є словником.

Ми можемо відсортувати список таким чином:

 # sorting using custom key employees = ( ('Name': 'Alan Turing', 'age': 25, 'salary': 10000), ('Name': 'Sharon Lin', 'age': 30, 'salary': 8000), ('Name': 'John Hopkins', 'age': 18, 'salary': 1000), ('Name': 'Mikhail Tal', 'age': 40, 'salary': 15000), ) # custom functions to get employee info def get_name(employee): return employee.get('Name') def get_age(employee): return employee.get('age') def get_salary(employee): return employee.get('salary') # sort by name (Ascending order) employees.sort(key=get_name) print(employees, end='') # sort by Age (Ascending order) employees.sort(key=get_age) print(employees, end='') # sort by salary (Descending order) employees.sort(key=get_salary, reverse=True) print(employees, end='')

Вихідні дані

(('Ім'я': 'Алан Тьюрінг', 'вік': 25, 'заробітна плата': 10000), ('Ім'я': 'Джон Хопкінс', 'вік': 18, 'оклад': 1000), ('Ім'я ':' Михайло Тал ',' вік ': 40,' зарплата ': 15000), (' Ім'я ':' Шарон Лін ',' вік ': 30,' зарплата ': 8000)) ((' Ім'я ':' Джон Хопкінс ',' вік ': 18,' зарплата ': 1000), (' Ім'я ':' Алан Тьюрінг ',' вік ': 25,' оклад ': 10000), (' Ім'я ':' Шарон Лін ', 'вік': 30, 'зарплата': 8000), ('Ім'я': 'Михайло Таль', 'вік': 40, 'оклад': 15000)) (('Ім'я': 'Михайло Таль', 'вік' : 40, 'зарплата': 15000), ('Ім'я': 'Алан Тьюрінг', 'вік': 25, 'зарплата': 10000), ('Ім'я ':' Шарон Лін ',' вік ': 30,' заробітна плата ': 8000), (' Ім'я ':' Джон Хопкінс ',' вік ': 18,' оклад ': 1000))

Тут, для першого випадку, наша спеціальна функція повертає ім’я кожного працівника. Оскільки ім'я a string, Python за замовчуванням сортує його за алфавітним порядком.

У другому випадку вік ( int) повертається і сортується за зростанням.

У третьому випадку функція повертає заробітну плату ( int) і сортується у порядку зменшення за допомогою reverse = True.

Доброю практикою є використання лямбда-функції, коли функцію можна узагальнити в один рядок. Отже, ми також можемо написати вищезгадану програму як:

 # sorting using custom key employees = ( ('Name': 'Alan Turing', 'age': 25, 'salary': 10000), ('Name': 'Sharon Lin', 'age': 30, 'salary': 8000), ('Name': 'John Hopkins', 'age': 18, 'salary': 1000), ('Name': 'Mikhail Tal', 'age': 40, 'salary': 15000), ) # sort by name (Ascending order) employees.sort(key=lambda x: x.get('Name')) print(employees, end='') # sort by Age (Ascending order) employees.sort(key=lambda x: x.get('age')) print(employees, end='') # sort by salary (Descending order) employees.sort(key=lambda x: x.get('salary'), reverse=True) print(employees, end='')

Вихідні дані

(('Ім'я': 'Алан Тьюрінг', 'вік': 25, 'заробітна плата': 10000), ('Ім'я': 'Джон Хопкінс', 'вік': 18, 'оклад': 1000), ('Ім'я ':' Михайло Тал ',' вік ': 40,' зарплата ': 15000), (' Ім'я ':' Шарон Лін ',' вік ': 30,' зарплата ': 8000)) ((' Ім'я ':' Джон Хопкінс ',' вік ': 18,' зарплата ': 1000), (' Ім'я ':' Алан Тьюрінг ',' вік ': 25,' оклад ': 10000), (' Ім'я ':' Шарон Лін ', 'вік': 30, 'зарплата': 8000), ('Ім'я': 'Михайло Таль', 'вік': 40, 'оклад': 15000)) (('Ім'я': 'Михайло Таль', 'вік' : 40, 'зарплата': 15000), ('Ім'я': 'Алан Тьюрінг', 'вік': 25, 'зарплата': 10000), ('Ім'я ':' Шарон Лін ',' вік ': 30,' заробітна плата ': 8000), (' Ім'я ':' Джон Хопкінс ',' вік ': 18,' оклад ': 1000))

Щоб дізнатись більше про лямбда-функції, відвідайте Python Lambda Functions.

Цікаві статті...