Python Сортировка списка() с примерами

⚡ Умное резюме

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

  • 🔘 Синтаксис: Метод sort() принимает необязательные параметры key и reverse и изменяет исходный список без создания его копии.
  • ☑️ Контроль заказов: Установка параметра reverse в значение True сортирует значения от наибольшего к наименьшему вместо стандартного возрастающего порядка.
  • Ключевой параметр: Ключевая функция, такая как `len`, сортирует элементы по производному значению, например, по длине строки или по полю кортежа.
  • 🧪 сортировка против отсортированного: Метод sort() изменяет список на месте и возвращает None, в то время как sorted() возвращает новый список и сохраняет исходный.
  • 🇧🇷 Пользовательские критерии: Лямбда-выражения и определяемые пользователем функции позволяют функции sort() упорядочивать кортежи, словари и именованные кортежи по любому выбранному атрибуту.
  • 🤖 Рабочие процессы ИИ: Конвейеры машинного обучения сортируют прогнозы по оценке и выбирают лучшие результаты перед ранжированием или оценкой.

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

Что такое метод sort() в Python?

Функция sort() в Python Эта функция помогает сортировать список в порядке возрастания или убывания. Она может использоваться для сортировки числовых списков, кортежей и строковых списков. Она не создает отдельный список, а изменяет или сортирует исходный.

Синтаксис метода сортировки в Python

Функция сортировки имеет следующий синтаксис:

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

Функция сортировки имеет два необязательных параметра, а именно:

  • Ключ: — используется для сортировки функции на основе критерия сортировки.
  • Reverse: – Функция принимает значение либо true, либо false. Если true, она сортирует список в порядке убывания.

Сортировка списка по возрастанию с помощью метода Sort в Python

In Python, функция сортировки по умолчанию сортирует любой список в порядке возрастания. В списке в порядке возрастания наименьшее значение находится слева, а наибольшее значение — справа.

Это критически важно для анализа и выбора наиболее эффективных ключевых слов для улучшения рейтинга вашего сайта.

Python код:

base_list=["Google","Reliance","Guru99","Content","Syntax"]
base_list.sort()
print("the base list after sorting is",base_list)

Выход:

the base list after sorting is ['Content', 'Google', 'Guru99', 'Reliance', 'Syntax']

Code Объяснение:

  • Приведенный выше список представляет собой случайно определенный список строк.
  • Функция сортировки Python помогает сортировать случайный список в порядке возрастания: наименьшая длина слова находится слева, а наибольшая длина слова — справа.

Сортировка списка по убыванию

Функция сортировки также позволяет сортировать список в порядке убывания. Его можно определить как порядок где список начинается с самого высокого значения и заканчивается самым низким значением.

Параметру обратного функции сортировки присваивается значение true, чтобы отсортировать список в порядке убывания.

Рассмотрим приведенный ниже пример:

Python код:

base_list=[100,600,400,8000,50]
base_list.sort()
print("the base list after sorting is",base_list)
# Reverse Order
base_list.sort(reverse=True)
print("the base list after REVERSE sorting is",base_list)

Выход:

the base list after sorting is [50, 100, 400, 600, 8000]
the base list after REVERSE sorting is [8000, 600, 400, 100, 50]

Примечание. Убедитесь, что присвоение слова «True» обратному параметру начинается с заглавной буквы «T», чтобы избежать ошибок во время выполнения.

Сортировка списка кортежей с помощью метода Sort в Python

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

Пользовательскую функцию можно создать без имени, представив её в виде лямбда-выражения. Ниже приведён синтаксис лямбда-выражения:

Синтаксис:

Lambda arguments: expression

Приведенный выше синтаксис эквивалентен приведенному ниже коду Python:

def name (arguments):
return expression

Вот пример кортежа и пользовательской функции, иллюстрирующий, как функция сортировки с ключевыми параметрами помогает отсортировать элементы в кортеже:

Python код:

base_list = [('Alto', 2020, 500),('MSFT', 2022, 300),('Guru99', 2019, 1070)]
def get_key(base_list):
    return base_list[2]
base_list.sort(key=get_key,reverse=True)
print("The change in base list is as follows",base_list)

Выход:

The change in the base list is as follows [('Guru99', 2019, 1070), ('Alto', 2020, 500), ('MSFT', 2022, 300)]

Code Объяснение:

  • Параметрverse определяется как true для сортировки кортежа в порядке убывания.
  • Настраиваемая функция принимает второй элемент кортежа.
  • Он используется как ключ функции сортировки.

Давайте посмотрим на приведенный ниже пример, в котором используется лямбда-выражение:

Python код:

base_list = [('Alto', 2020, 500),
('MSFT', 2022, 300),
('Guru99', 2019, 1070)]
base_list.sort(key=lambda base_list:base_list[2],reverse=True)
print("The change in base list is as follows",base_list)

Выход:

The change in the base list is as follows [('Guru99', 2019, 1070), ('Alto', 2020, 500), ('MSFT', 2022, 300)]

Объяснение:

  • Лямбда-выражение помогает сортировать элементы кортежа от большего к меньшему, используя ключ в качестве второго элемента кортежа.
  • Программа проверит наибольшее значение второго элемента кортежа.

Сортировка элементов списка с использованием Len в качестве ключевого параметра

Len — это встроенная функция, определяющая длину элемента. Полученная длина может использоваться для индексации в функции сортировки. Для этого мы присваиваем значение Len. Python Ключевой параметр функции сортировки.

Следующие Python код иллюстрирует, как использовать функцию Len с функцией сортировки.

Python Code:

base_list=["Alto", "Guru99", "Python", "Google", "Java"]
base_list.sort(key=len)
print("The sorted list based on length:",base_list)

Выход:

The sorted list based on length: ['Alto', 'Java', 'Guru99', 'Python', 'Google']

Code Объяснение:

Сортировка элементов списка с помощью Len

  • Длина элемента становится индексом ключевого параметра для упорядочения списка в порядке возрастания.
  • Функция Len оценивает длину каждого элемента, присутствующего в базовом списке.
  • Он сохраняет самый короткий элемент слева и самый большой элемент справа.
  • Здесь слова alto и java имеют длину 4, они расположены первыми в списке, за ними следуют Guru99, длина которого составляет 6.

Этот пример иллюстрирует концепцию параметра reverse в функции сортировки, как показано ниже:

Python Code:

base_list=["Alto", "Guru99", "Python", "Google", "Java"]
base_list.sort(key=len,reverse=True)
print("The sorted list based on length:",base_list)

Выход:

The sorted list based on length: ['Guru99', 'Python', 'Google', 'Alto', 'Java']

Сортировка элементов списка с использованием пользовательской функции в качестве ключевого параметра

Также можно использовать пользовательскую функцию в качестве ключевого параметра для сортировки списка. Вот пример:

Python Code:

base_list = [{'Example':'Python','year':1991},{'Example':'Alto','year':2014},{'Example':'Guru99', 'year':1995},
{'Example':'Google','year':1985},{'Example':'Apple','year':2007},{'Example':'Emails','year':2010},]
def get_year(element):
    return element['year']
base_list.sort(key=get_year)
print("The base list after sorting using explicit criteria",base_list)

Выход:

The base list after sorting using explicit criteria [{'Example': 'Google', 'year': 1985}, {'Example': 'Python', 'year': 1991}, {'Example': 'Guru99', 'year': 1995}, {'Example': 'Apple', 'year': 2007}, {'Example': 'Emails', 'year': 2010}, {'Example': 'Alto', 'year': 2014}]

Code Объяснение:

  • Создается пользовательская функция для возврата года.
  • Ключевой параметр принимает в качестве критерия определяемую пользователем функцию.
  • Функция сортировки упорядочит список в порядке возрастания на основе значения элемента «год».

Разница между методом сортировки и методом сортировки в Python

После рассмотрения приведенных выше примеров полезно напрямую сравнить два инструмента сортировки. Прежде чем суммировать различия, давайте разберемся в синтаксисе метода Sorted.

Python Синтаксис:

sorted (list_name, reverse=…., key=..)

Code Объяснение:

  • Функция sorted сортирует список либо по возрастанию, либо по убыванию.
  • Функция принимает три параметра, из которых два параметра необязательного типа и один параметр обязательного типа.
  • Параметр list_name является обязательным при использовании метода Sorted.
  • Метод Sorted может принимать в качестве входных данных итерируемый список любого типа.
  • Ключевые параметры и обратные параметры являются необязательными параметрами в методе сортировки Python.

Вот пример использования функции sort и sorted в Python:

Python код:

#Use of the Sorted method
Base_list=[11,10,9,8,7,6]
print("the original list is",Base_list)
New_list=sorted(Base_list)
print("the New list using sorted method is",New_list)
#Use of the Sort method
Base_list=[11,10,9,8,7,6]
print("the original list is",Base_list)
New_list=Base_list.sort()
print("the New list using sort method is",New_list)

Выход:

the original list is [11, 10, 9, 8, 7, 6]
the new list using the sorted method is [6, 7, 8, 9, 10, 11]
the original list is [11, 10, 9, 8, 7, 6]
the new list using the sort method is None

Code Объяснение:

  • Исходный список передается в качестве обязательного параметра для функции сортировки.
  • Метод Sorted возвращает новый список помимо исходного списка.
  • Поскольку методу sorted не передаются никакие дополнительные параметры, новый список по умолчанию сортируется по возрастанию.
  • Функция сортировки не создает новый список.

Ниже приведены основные сходства и различия:

Сортированная функция Функция сортировки
Сортированная функция в Python — это встроенная функция, которая принимает имя_списка в качестве обязательного параметра. Функция сортировки не принимает исходный список в качестве параметра.
Метод Sorted возвращает новый список Функция сортировки не возвращает новый список
Сортированную функцию следует использовать для итеративных списков. Функцию сортировки следует использовать для неитерируемых списков.
Он не изменяет исходный список и позволяет нам сохранять исходные данные. Функция сортировки изменяет исходную функцию и, следовательно, занимает меньше места в памяти.

Когда использовать метод сортировки или метод сортировки?

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

Python код:

from collections import namedtuple
Base = namedtuple('Runner', 'bibnumber duration')
blist = []
blist.append(Base('8567', 1500))
blist.append(Base('5234', 1420))
blist.append(Base('2344', 1600))
blist.append(Base('2342', 1490))
blist.append(Base('23444', 1620))
blist.append(Base('6674', 1906))
print("original list",blist)
blist.sort(key=lambda x: getattr(x, 'duration'))
top_five_result = blist[:5]
print("Results using sort function",top_five_result)
r_blist=sorted(blist,key=lambda x: getattr(x, 'duration'))
top_five_result = r_blist[:5]
print("Results using sorted function",top_five_result)

Выход:

original list [Runner(bibnumber='8567', duration=1500), Runner(bibnumber='5234', duration=1420), Runner(bibnumber='2344', duration=1600), Runner(bibnumber='2342', duration=1490), Runner(bibnumber='23444', duration=1620), Runner(bibnumber='6674', duration=1906)]

Results using sort function [Runner(bibnumber='5234', duration=1420), Runner(bibnumber='2342', duration=1490), Runner(bibnumber='8567', duration=1500), Runner(bibnumber='2344', duration=1600), Runner(bibnumber='23444', duration=1620)]

Results using sorted function [Runner(bibnumber='5234', duration=1420), Runner(bibnumber='2342', duration=1490), Runner(bibnumber='8567', duration=1500), Runner(bibnumber='2344', duration=1600), Runner(bibnumber='23444', duration=1620)]

Code Объяснение:

  • Базовый список сортируется с использованием как функции сортировки, так и функции сортировки.
  • Базовый список теряется при применении функции сортировки.
  • Функцию сортировки не следует применять к исходному набору данных. Его следует использовать при наличии копии исходного набора данных.
  • Функция Sorted сохраняет исходный список. Это не отменяет его.
  • Это предлагает лучшие условия tracУдобство и эффективное управление данными.

Часто задаваемые вопросы (FAQ)

Передайте key=str.lower методу sort(), например, names.sort(key=str.lower). Каждая строка сравнивается в нижнем регистре, поэтому 'Apple' и 'banana' упорядочиваются по алфавиту независимо от регистра. Исходный регистр каждого элемента сохраняется в итоговом отсортированном списке.

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

Python Исторически использовался алгоритм Timsort, гибрид сортировки слиянием и сортировки вставками. Начиная с версии 3.11, интерпретатор использует Powersort, вариант, производный от Timsort, с более интеллектуальной политикой слияния. Оба алгоритма стабильны и работают за время O(n log n) в худшем случае.

Да. Метод sort() стабилен, поэтому элементы, которые сравниваются как равные, сохраняют свой исходный относительный порядок. Это позволяет сортировать по нескольким критериям в несколько этапов, начиная с наименее важного ключа и заканчивая наиболее важным.

Метод sort() работает за время O(n log n) в худшем и среднем случаях. На данных, которые уже в основном упорядочены, он приближается к O(n), поскольку базовый алгоритм обнаруживает и повторно использует существующие отсортированные последовательности вместо их повторной сортировки.

Передайте ключ, который преобразует каждый элемент во время сравнения, например, nums.sort(key=int). В этом случае список будет упорядочен по числовому значению, а не по символу, поэтому «10» будет правильно отсортировано после «9». Сохраненные элементы остаются строками; только при сравнении используется их целочисленное значение.

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

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

Подведем итог этой публикации следующим образом: