Введение в сортировку в Python

В какой-то момент в приложении или программе нам нужно отсортировать данные в некотором порядке, например, отсортировать сотрудников по зарплате или по рангу, отсортировать список продуктов по цене продукта и так далее. В этом случае разработчику необходимо реализовать сортировку в программе, если разработчик использует язык программирования Python, его будет очень легко реализовать. Python предоставляет встроенные функции для выполнения базовой сортировки или настройки функций сортировки на уровне детализации. В Python есть 2 встроенные функции для сортировки.

Давайте посмотрим, как сортировать данные разных типов, сортировать данные в индивидуальном порядке.

  • Нам нужно выполнить сортировку коллекции элементов или групп элементов, чтобы мы получили коллекцию элементов в некотором порядке сортировки. Для сортировки сравнение должно выполняться среди каждого элемента коллекции, и сравнение возможно только и только если они имеют один и тот же тип данных, поэтому сортировку мы можем выполнить для коллекции, если они являются одинаковыми элементами типа данных, например, целое число в целое Можно сравнить, но не целое число в строку.
  • Следующим пунктом является создание коллекции элементов, в python у нас есть структуры данных списков, кортежей, множеств и словарей, которые используются для хранения коллекции элементов. Поэтому для выполнения сортировки необходимо иметь базовое понимание тезисов. Мы будем использовать Python 3, синтаксис может немного отличаться, если вы используете Python 2 и пример вывода, а также.

Функция сортировки в питоне

В python есть две встроенные функции сортировки.

  • Сортировать()
  • отсортированный ()

Две функции сортировки упомянуты ниже:

1. сортировать ()

Метод sort () сортирует элементы заданного списка коллекций в определенном порядке: по возрастанию или по убыванию.

Синтаксис функции sort ():

list.sort(key = …, reverse = …)

  • key - параметр keyspecify, который используется для сравнения сортировки.
  • Reverse - параметр reverse, если true, отсортированный список переворачивается, что означает сортировку в порядке убывания.

Чтобы получить описание функции сортировки, используйте команду help, как указано ниже.

>>> lis=(1, 4, 3, 2) >>> help( lis.sort )

Давайте начнем функцию сортировки с примера.

Пример № 1:

l = ( 20, 50, 10, 40, 60 ) print("list = ", l)
l.sort()
print("sorted list = ", l)

Выход:

Как и в приведенном выше коде, создается несортированный список (20, 50, 10, 40, 60) и далее применяется функция sort (), которая сортирует список в порядке возрастания и ничего не возвращает.

Далее мы попробуем функцию sort () для типа данных decimal или float.

Пример № 2:

l = ( 26.7, 34.23, 67.45, 89.34, 23.18 ) print("list = ", l)
l.sort()
print("sorted list = ", l)

Выход:

Далее мы попробуем функцию sort () для типа данных char.

Пример № 3:

l = ( 'b', 'd', 'a', 'n', 'g') print("liist = ", l)
l.sort()
print("sorted liist = ", l)

Выход:

Далее мы попробуем функцию sort () для типа данных String.

Пример № 4:

l = ( "banana", "apple", "orange", "mango" ) print("liist = ", l)
l.sort()
print("sorted liist = ", l)

Выход:

Далее мы попробуем функцию sort () для элементов разных типов данных.

Пример № 5:

l = ( 89, 56.78, "apple" ) print("liist = ", l)
l.sort()
print("sorted liist = ", l)

Выход:

Далее мы попробуем функцию sort () с обратными аргументами.

Пример № 6:

l = ( 26.7, 34.23, 67.45, 89.34, 23.18 ) print("liist = ", l)
l.sort( reverse = True )
print("sorted liist = ", l)

Выход:

В приведенном выше коде создается несортированный список (26.7, 34.23, 67.45, 89.34, 23.18) и далее применяется функция sort () с reverse = True, значением по умолчанию reverse является False, которое сортирует список в обратном порядке или в порядке убывания.

Далее мы попробуем функцию sort () с ключевыми аргументами:

Ключевой параметр является наиболее важным компонентом функции sort (). К этому аргументу передается функция, которая будет использоваться для каждого сортируемого элемента в списке для упорядочения в результирующем порядке.

Давайте начнем пример, предположим, у нас есть список строк, и мы хотим отсортировать список на основе длины строк в списке в порядке возрастания (от самой короткой до самой длинной длины). Встроенная в python функция len () возвращает длину строки, поэтому len () можно использовать для передачи ключевого аргумента.

Пример № 7:

word = "Hello"
length = len(word)
print( "The length of word is ", length)
l = ( "aaa", "bbbbb", "cc", "ddd" ) print("liist = ", l)
print( "The length of list is ", len(l))
# length of the list is 4, because it contains 4 elements
# Now we sort the list based on the length of the list elements
l.sort( key = len )
print("Sorted liist = ", l)
# Now we sort the list based on the length of the list elements and reverse
l.sort(key = len, reverse = True)
print("Sorted liist with reverse = ", l)

Выход:

Результирующий порядок list.sort (key = len) представляет собой список строк сортировки в порядке от кратчайшего до самого длинного. Принимая во внимание, что list.sort (key = len, reverse = True), приводящий к порядку списка, является самым длинным или самым коротким. Длина каждого элемента в списке определяется функцией len ().

Далее мы попробуем функцию sort () с передачей ключа пользователю определить функцию:

Пример № 8:

l = ( 'banana', 'orange', 'apple' ) print("liist = ", l)
# function return second element
def sort_onSecondChar(word):
return word(1) l.sort( key = sort_onSecondChar )
print("Sorted liist based on second character = ", l)
# Now we sort the list based on the length of the list elements and reverse
l.sort( key = sort_onSecondChar, reverse = True)
print("Sorted liist based on second character with reverse = ", l)

Выход:

Результирующий порядок list.sort (key = sort_onSecondChar)) представляет собой список строк сортировки в порядке возрастания на основе второго символа. Принимая во внимание, что в списке list.sort (key = sort_onSecondChar, reverse = True) результирующий порядок списка уменьшается по второму символу. Сортировка каждого элемента в списке определяется пользователем для определения функции sort_onSecondChar ().

2. отсортировано ()

Вызов функции sorted () для списка или коллекции, он возвращает новый отсортированный список. Функция sorted () не редактирует и не изменяет список, для которого она вызывается, но в результате возвращает отсортированный список.

Синтаксис функции sorted ():

sorted(iterable, key, reverse)

  • Итерируемый - список, кортеж, строка, набор, замороженный набор, словарь, любая коллекция или итерация, которые нужно отсортировать.
  • reverse-reverse укажите, будет ли отсортированный список перевёрнутым или нет (то есть по убыванию). это
  • ключ - укажите функцию в качестве ключа для сравнения для сортировки. Это необязательно .

Чтобы получить описание функции сортировки, используйте команду help, как указано ниже.

Рассмотрим примеры:

Пример № 9:

l = ( 2, 1, 3, 6, 5, 4 ) print("list = ", l)
sorted(l)
print( "The sorted list = ", l)

Выход:

Обратите внимание, что мы также можем использовать функцию list.sort (), чтобы выполнить то же самое, но различия заключаются в том, что функция sort () изменяет сам список на месте и возвращает None в качестве выходного результата. Еще одно отличие функции list.sort () в том, что она может применяться к единственному списку, тогда как функция sorted () может применяться к любой коллекции или итерируемой.

Давайте посмотрим на пример, где мы создаем кортеж (мы знаем, что для создания кортежа используются (и) фигурные скобки и функции кортежа, он упорядочен, он хранит дубликаты, не может применяться к индексу и является неизменным) и применяется функция sorted (),

Пример № 10:

t = ( 60, 20, 40, 10 )
print("Tuple = ", t)
re=sorted(t)
#print return of sorted()
print( "The return sorted list of sorted() = ", re)
#we check what is there in t
print( "After sorted tuple = ", t)

Выход:

Если функция sort () применяется к кортежу, она выдает ошибку «AttributeError: объект tuple» не имеет атрибута «sort» ».

Таким образом, функция sort () не может применяться к кортежу, даже не может применяться к другим коллекциям, кроме списка.

Далее мы увидим несколько примеров с различными типами данных:

Пример № 11:

l = ( 2.89, 56.34, 45.23 ) print("List of floating numbers = ", l)
re=sorted(l)
#print return of sorted()
print( "The return list of sorted() floating numbers = ", re)
lc = ( 'l', 'e', 'g', 'a', 'd' ) print("List of characters = ", lc)
re=sorted(lc)
#print return of sorted()
print( "The return list of sorted() characters = ", re)

Выход:

Далее мы попробуем функцию sorted () с обратным параметром:

Давайте рассмотрим пример:

Пример № 12:

l = ( 2, 1, 3, 6, 5, 4 ) print("List = ", l)
re=sorted(l, reverse=True )
#print return of sorted()
print( "The return list of sorted() with reverse = ", re)

Выход:

Далее мы увидим функцию sorted () с параметром key, в приведенном ниже коде передана функция len () для параметра key, поэтому функция sorted () вернет список в порядке сортировки на основе длины элементов.

Пример № 13:

l = ('aaaa', 'bb', 'ccc', 'ddddd') print("List = ", l)
re=sorted(l, key = len )
#print return of sorted()
print( "The return list of sorted() with key = ", re)

Выход:

Далее мы увидим функцию sorted () с параметром ключа, когда пользователь определяет функцию, в приведенном ниже фрагменте кода передается функция returnSecond () параметру ключа. Функция returnSecond () - это пользователь, определяющий функцию, которая просто возвращает второй элемент, поэтому функция sorted () возвращает новый отсортированный список в порядке сортировки на основе второго элемента кортежа. Если мы хотим отсортировать на основе первого элемента, то отредактируйте функцию returnSecond (), чтобы вернуть первый элемент как (L (0)).

Пример № 14:

# return second element for sort
def returnSecond( L ):
return L(1) # list of tuple
list = ( ('a', 40), ('b', 30), ('c', 20), ('d', 10) ) # sorting list with key = returnSecond (returnSecond function which return second element so sort done based on seceond elemet)
sortedList = sorted(list, key = returnSecond)
# print list
print('The sorted list:', sortedList)

Выход:

Мы изменим приведенный выше код с помощью лямбда-функции (лямбда-функция является анонимной функцией, имитирующей то же, что и встроенные функции C и C ++).

Пример № 15:

# list of tuple
list = ( ('a', 40), ('b', 30), ('c', 20), ('d', 10) ) # sorting list with key = lambda x : x(1) (lambda function which return second element so sort done based on second element)
sortedList = sorted( list, key = lambda x : x(1))
print( "The sorted list = ", sortedList)

Выход:

Приведенный выше код изменяет сортировку на основе первого элемента путем изменения лямбда-функции.

Пример № 16:

# list of tuple
list = ( ('a', 40), ('b', 30), ('c', 20), ('d', 10) ) # sorting list with key = lambda x : x(0) (lambda function which return first element so sort done based on first element)
sortedList = sorted( list, key = lambda x : x(0))
# print list
print('The sorted list:', sortedList)

Выход:

Теперь давайте создадим список данных ученика и сохраним сведения о каждом ученике, которые мы будем использовать. Один кортеж содержит одну запись студента, первый элемент в кортеже - это имя студента, второй элемент - это номер броска студента, а третий элемент - это общая оценка студента. Далее мы хотим сохранить данные учеников в порядке их отметок, поэтому давайте начнем кодирование.

Пример № 17:

students = ( ('john', 1, 60), ('jane', 2, 70), ('dave', '3', 70.5), ('joseph', 1, 92) ) print( "The Student List = ", students)
# sorting the student list of tuple based on the third element that is marks
sortedlist = sorted(students, key=lambda stud : stud(2))
print("The sorted list = ", sortedlist)
#reverese
sortedlist = sorted(students, key=lambda stud : stud(2), reverse=True)
print("The sorted list with reverse=True ", sortedlist)
# Display the student name and marks in sorting order of their marks
sortedlist = sorted(students, key=lambda stud : stud(2))
print("The student names and marks in order of their marks")
print("name", "marks")
for x in sortedlist:
print(x(0), x(2))

Выход:

Вывод

Функции sort () и sorted () используются для сортировки коллекции. List.sort () редактирует сам список, тогда как отсортированный (list) не редактирует список, возвращает новый отсортированный список. Функция sort () применяется только к списку, тогда как функция sorted () может применяться ко всем коллекциям, таким как list, tuple, dictionary и все.

Рекомендуемые статьи

Это руководство по сортировке в Python. Здесь мы обсуждаем две встроенные функции сортировки в Python с программой и выводом. Вы также можете посмотреть следующую статью, чтобы узнать больше -

  1. Переменные Python
  2. Деструктор в Python
  3. Подключение к базе данных Python
  4. Редакторы Python
  5. Типы данных PL / SQL
  6. Различные типы данных SQL с примерами