Перейти к содержимому

Как отсортировать список в python

  • автор:

Какая функция нужна для сортировки в Python?

Чтобы отсортировать коллекцию в Python, можно воспользоваться одним из этих 2 способов:

1) Встроенная функция sorted(iterable, /, *, key=None, reverse=False) возвращает новый отсортированный список, который получен из итерируемого объекта, переданного как аргумент. Необязательные именованные аргументы key и reverse могут влиять на сортировку.

Примеры:

list_ = ['list', 'string', 'tuple', 'dict'] sorted(list_) # ['dict', 'list', 'string', 'tuple'] # без дополнительных аргументов функция отсортирует слова по алфавиту tuple_ = ('tuple', 'list', 'dict', 'set', 'string', '!') sorted(tuple_) # ['!', 'dict', 'list', 'set', 'string', 'tuple'] # не зависимо от типа аргумента, функция вернет список string = 'Some words' sorted(string) # [' ', 'S', 'd', 'e', 'm', 'o', 'o', 'r', 's', 'w'] dict_ = 'dict': 1, 'list': 2, 'set': 3> sorted(dict_) # ['dict', 'list', 'set'] # сортировка словаря вернёт отсортированный список ключей 

Примеры с именованными аргументами:

sorted(dict_, reverse=True) # ['set', 'list', 'dict'] set_of_nums = 1, 2, 3, 4, 5, 6> sorted(set_of_nums, key=lambda x: x % 2) # [2, 4, 6, 1, 3, 5] set_of_wrd = 'set', 'string', 'list', ''> sorted(set_of_wrd, key=len) # ['', 'set', 'list', 'string'] 

2) Для списков также есть встроенный метод sort(*, key=None, reverse=False) работающий аналогично функции sorted, но не возвращающий новый список, а изменяющий исходный «по месту».

list_of_nums = [5, 3, 1, 4, 5, 7, 9] list_of_nums.sort() list_of_nums # [1, 3, 4, 5, 5, 7, 9] list_of_nums.sort(reverse=True) list_of_nums # [9, 7, 5, 5, 4, 3, 1] list_of_nums.sort(key=lambda x: x % 2) list_of_nums # [4, 9, 7, 5, 5, 3, 1] 

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

В Python данные можно сортировать с помощью методов sorted() или sort() . В этой статье мы поговорим о том, как работает сортировка списков в Python. Разберем примеры кода для методов sorted() и sort() и посмотрим, чем они отличаются.

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

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

В этом примере у нас есть список чисел, и мы можем использовать метод sort() для сортировки списка в порядке возрастания.

my_list = [67, 2, 999, 1, 15] # Выводим неупорядоченный список: print("Unordered list: ", my_list) # Сортировка списка my_list.sort() # Выводим упорядоченный список print("Ordered list: ", my_list)

Выполним наш код и получим следующий результат:

Unordered list: [67, 2, 999, 1, 15] Ordered list: [1, 2, 15, 67, 999]

Однако если список уже отсортирован, то мы получим None.

my_list = [6, 7, 8, 9, 10] # Это строка вернет None, потому что список уже отсортирован print(my_list.sort())

Метод sort() может принимать два необязательных аргумента: key и reverse .

Значением key выступает функция, которая будет вызываться для каждого элемента в списке.

От редакции Pythonist. О функциях и их аргументах у нас есть отдельная статья — «Функции и их аргументы в Python 3».

В следующем примере давайте используем функцию len() в качестве значения аргумента key. Таким образом, key=len скажет компьютеру отсортировать список имен по длине, от наименьшего к наибольшему.

names = ["Jessica", "Ben", "Carl", "Jackie", "Wendy"] print("Unsorted: ", names) names.sort(key=len) print("Sorted: ", names)

Вот, что мы получим:

Unsorted: ['Jessica', 'Ben', 'Carl', 'Jackie', 'Wendy'] Sorted: ['Ben', 'Carl', 'Wendy', 'Jackie', 'Jessica']

Аргумент reverse может иметь логическое значение: True (Истина) или False (Ложь).

В следующем примере reverse=True укажет компьютеру отсортировать список в обратном алфавитном порядке.

names = ["Jessica", "Ben", "Carl", "Jackie", "Wendy"] print("Unsorted: ", names) names.sort(reverse=True) print("Sorted: ", names) # Результат: # Unsorted: ['Jessica', 'Ben', 'Carl', 'Jackie', 'Wendy'] # Sorted: ['Wendy', 'Jessica', 'Jackie', 'Carl', 'Ben']

[python_ad_block]

Как использовать метод sorted() в Python

Этот метод превращает итерируемый объект в отсортированный список. Итерируемыми объектами могут быть списки, строки и кортежи.

Одно из ключевых различий между sort() и sorted() заключается в том, что sorted() вернет новый список, а sort() сортирует уже имеющийся.

В следующем примере у нас есть список чисел, который нужно отсортировать в порядке возрастания.

sorted_numbers = sorted([77, 22, 9, -6, 4000]) print("Sorted in ascending order: ", sorted_numbers) # Результат: # Sorted in ascending order: [-6, 9, 22, 77, 4000]

Метод sorted() тоже принимает необязательные аргументы. Они такие же, как и у sort() : key и reverse .

Давайте разберем следующий пример. У нас есть список чисел. Пропишем необязательный аргумент reverse=True . Он укажет компьютеру отсортировать список от наибольшего числа к наименьшему.

sorted_numbers = sorted([77, 22, 9, -6, 4000], reverse=True) print("Sorted in descending order: ", sorted_numbers) # Результат: # Sorted in descending order: [4000, 77, 22, 9, -6]

Метод sorted() для других типов данных

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

Давайте разобьём строку на отдельные слова с помощью метода split() , а затем используем метод sorted() для сортировки слов по длине от наименьшего к наибольшему.

my_sentence = "Jessica found a dollar on the ground" # Вывод оригинального предложения: print("Original sentence: ", my_sentence) # Вывод отсортированного списка слов: print(sorted(my_sentence.split(), key=len)) # Результат: # Original sentence: Jessica found a dollar on the ground # ['a', 'on', 'the', 'found', 'dollar', 'ground', 'Jessica']

А теперь давайте чуть изменим наш пример. Добавим необязательный аргумент reverse . Благодаря этому список будет отсортирован в обратном порядке, от самого длинного слова к самому короткому.

my_sentence = "Jessica found a dollar on the ground" print("Original sentence: ", my_sentence) print(sorted(my_sentence.split(), key=len, reverse=True)) # Результат: # Original sentence: Jessica found a dollar on the ground # ['Jessica', 'dollar', 'ground', 'found', 'the', 'on', 'a']

Мы также можем использовать метод sorted() и для кортежей.

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

band_students = [ ('Danny', 17, 'Trombone'), ('Mary', 14, 'Flute'), ('Josh', 15, 'Percussion') ]

Мы можем использовать метод sorted() для сортировки этих данных по возрасту учащегося. Аргумент key будет иметь значение лямбда-функции, которая сообщает компьютеру о сортировке по возрасту в порядке возрастания.

Лямбда-функция – это анонимная функция. Этот тип функции можно определить с помощью ключевого слова lambda .

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

lambda student: student[1]

Чтобы получить доступ к значению в кортеже, мы используем квадратные скобки [] и индекс элемента в кортеже, к которому хотим получить доступ. Поскольку в Python отсчет идет с нуля, возраст у нас будет под индексом [1] .

Таким образом, мы получаем следующий код:

band_students = [ ('Danny', 17, 'Trombone'), ('Mary', 14, 'Flute'), ('Josh', 15, 'Percussion') ] print(sorted(band_students, key=lambda student: student[1])) # Результат: # [('Mary', 14, 'Flute'), ('Josh', 15, 'Percussion'), ('Danny', 17, 'Trombone')]

Мы можем изменить этот пример. Давайте отсортируем кортежи по названиям музыкальных инструментов. Более того, давайте используем reverse=True для сортировки инструментов в обратном алфавитном порядке.

band_students = [ ('Danny', 17, 'Trombone'), ('Mary', 14, 'Flute'), ('Josh', 15, 'Percussion') ] print(sorted(band_students, key=lambda student: student[2], reverse=True)) # Результат: # [('Danny', 17, 'Trombone'), ('Josh', 15, 'Percussion'), ('Mary', 14, 'Flute')]

Заключение

В этой статье мы разобрали, как работает сортировка списков в Python. Узнали, как работать с такими методами, как sort() и sorted() , и в чем их различия.

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

А метод sorted() работает с любыми итерируемыми объектами и возвращает новый отсортированный список. В качестве итерируемых объектов могут выступать списки, строки, кортежи и другие.

У обоих этих методов есть два необязательных аргумента: key и reverse .

Значением аргумента key может быть функция. Она будет вызываться для каждого элемента в списке. По этой функции, собственно, и будет проводиться сортировка.

Значением аргумента reverse может быть True или False .

Надеемся, эта статья была для вас полезна. Успехов в написании кода!

Сортировка списка по нескольким атрибутам в Python

Сортировка данных — одна из самых распространенных задач в программировании. В Python есть встроенная функция sorted() , которая позволяет сортировать данные по одному атрибуту. Например, представьте, что у вас есть список списков:

data = [[5, 'Алексей', 'синий'], [3, 'Виктор', 'красный'], [7, 'Алексей', 'желтый']]

Можно отсортировать этот список по имени, используя функцию sorted() и itemgetter() из модуля operator :

from operator import itemgetter sorted_data = sorted(data, key=itemgetter(1))

Но что делать, если нужно отсортировать список по нескольким атрибутам, например, по имени и цвету одновременно?

Сортировка по нескольким атрибутам

В Python, функция sorted() может принимать в качестве ключа кортеж. Это означает, что можно отсортировать список по нескольким атрибутам, просто передав их в качестве ключа в виде кортежа. Вернемся к предыдущему примеру и отсортируем его по имени и цвету:

from operator import itemgetter sorted_data = sorted(data, key=itemgetter(1, 2))

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

Заключение

В Python, сортировка данных по нескольким атрибутам — это просто и эффективно. Используя функцию sorted() и itemgetter() из модуля operator , можно легко отсортировать список по любому количеству атрибутов, просто передав их в качестве ключа в виде кортежа. Это делает Python мощным инструментом для обработки и анализа данных.

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

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

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

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

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

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

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

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

В 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']

Пояснение к коду:

  • Приведенный выше список представляет собой случайно определенный список строк.
  • Функция сортировки 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 можно использовать для сортировки списка кортежей с помощью настраиваемой функции и лямбда-выражения.

Пользовательскую функцию можно создать без имени и представить с помощью лямбда-выражения. Фоллоwing – это синтаксис лямбда-выражения: –

Синтаксис:

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)]

Пояснение к коду:

  • Параметр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.

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

Код Python:

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']

Пояснение к коду:

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

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

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

Код Python:

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:

base_list = [,,, ,,,] 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 [, , , , , ]

Пояснение к коду:

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

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

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

Синтаксис Python:

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

Пояснение к коду:

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

Вот пример использования функции сортировки и сортировки в 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

Пояснение к коду:

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

Фоллоwing являются точки зрения на ключевые сходства и различия: –

Сортированная функция Функция сортировки
Сортированная функция в 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)]

Пояснение к коду:

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

Заключение

  • Функция сортировки помогает сортировать числовой и строковый список в Python.
  • Это также может помочь в сортировке кортежей.
  • Reverse и key являются необязательными параметрами функции.
  • Если есть необходимость иметь отдельный список и одновременноneoЕсли у вас есть исходный список, то необходимо использовать функцию сортировки, в противном случае необходимо использовать функцию сортировки для достижения оптимизированного использования памяти.
  • Онлайн-компилятор Python (редактор/интерпретатор/IDE) для запуска кода
  • Учебное пособие по PyUnit: Платформа модульного тестирования Python (с примером)
  • Как установить Python в Windows [Pycharm IDE]
  • Hello World: создайте свою первую программу на Python
  • Переменные Python: как определить/объявить типы строковых переменных
  • Строки Python: замена, объединение, разделение, реверс, верхний и нижний регистр
  • Python TUPLE – упаковка, распаковка, сравнение, нарезка, удаление, ключ
  • Словарь на Python с синтаксисом и примером

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *