Введение в сортировку в 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 с программой и выводом. Вы также можете посмотреть следующую статью, чтобы узнать больше -
- Переменные Python
- Деструктор в Python
- Подключение к базе данных Python
- Редакторы Python
- Типы данных PL / SQL
- Различные типы данных SQL с примерами