Чем отличается sort от sorted в питоне
Перейти к содержимому

Чем отличается sort от sorted в питоне

  • автор:

Difference Between Sort and Sorted in Python

Python language supports two built-in methods to perform the sorting operation on any sequence.

These two methods are given below:

The sort() function returns nothing and changes the original sequence, while the sorted() function creates a new sequence type containing a sorted version of the given sequence.

Let’s discuss the above two methods of our topic difference between sort and sorted in Python in detail.

sort() function in Python

  • The sort() function is used to perform the sorting operation, like the Sorted Function, but is very different in terms of its uses.
  • The sort() function is a list method, i.e., it can only be used to sort a list.
  • The sort() function returns nothing, which means it makes changes to the object passed, i.e., the original sequence.

Syntax of sort() function in Python

Parameters of sort() function in Python

Two parameters are passed in the sort () built-in method, which is as follows:

  • Key: It is an optional parameter. This works as a basis for comparison while sorting.
  • Reverse: It is an optional parameter. It is a boolean variable, i.e., if set to True, it sorts the variable in descending order, else it sorts in ascending order. The default value of reverse is false.

Return Type of sort() function in Python

Sort() function makes changes to the original sequence. Therefore, its return type is None.

sorted() function in Python

  • The sorted function in Python is one of the most versatile functions.
  • It can be used to sort a list, set, and dictionary as well. It works on sequences, such as lists, tuples, or strings, as well as collections, such as a dictionary, set, or frozenset.
  • It by default sorts in ascending order but can also sort in descending using the reverse parameter, i.e., if the reverse parameter is set to true, it sorts the dictionary in descending order.
  • The specialty of the sorted function is that it does not affect the original sequence of the object, i.e., it creates a sorted copy of the object and returns it.

Syntax of sorted() function in Python

Parameters of sorted() function in Python

Three parameters are passed in the sorted() method in Python, which are as follows:

  • Iterable: This is the Python object that needs to be sorted. It can either be a sequence, i.e. a list, tuple, or string, or a collection, i.e., a dictionary, set, or a frozenset
  • Key: It is an optional parameter. This works as a basis for comparison while sorting.
  • Reverse: It is an optional parameter. It is a boolean variable, i.e., if set to True, it sorts the variable in descending order, else it sorts in ascending order. The default value of reverse is false.

Return Type of sorted() function in Python

The sorted function returns a list of sorted items from whatever iterable you pass in.

Sort vs Sorted in Python

Sort() method Sorted() Method
The Sort() function only works on the list. The Sorted()function can work both on Sequences and Collections.
It sorts the object in-place, so it returns None. It returns a sorted list of the Iterable passed.
It sorts the original sequence, i.e., Inplace sorting. It creates a sorted copy of the Python object.
It takes 2 parameters, i.e., key and reverse. It takes 3 parameters, i.e., iterable, key, and reverse.
Syntax: list_name.sort(key, reverse=False) Syntax: sorted(iterable, key, reverse = True)

Examples of sort() function in Python

Example 1: Using sort() function with List in Python

Code:

Output:

Example 2: Using sort() function to sort in descending order

Code:

Output:

Explanation:

  1. In the above code, we can observe that first, we create a list that stores a sequence of unsorted sequence numbers.
  2. Then we apply the sort() method, which sorts the list in place.
  3. And lastly, we will get the sorted sequence of numbers.

Examples of sorted() function in Python

Example 1: Using sorted() function with List in Python

Code:

Output:

Example 2: Using sorted() function with Set in Python

Code:

Output:

Example 3: Using sorted() function with Dictionary in Python

Code:

Output:

Example 4: Using sorted() function with Tuple in Python

Code:

Output:

Example 5: Using sorted() function with String in Python

Code:

Output:

As you can see from the above examples, that the sorted() function returns a list of sorted items from whatever iterable you pass in.

Conclusion

Let’s summarise our topic difference between sort and sorted in Python by mentioning some of the important points.

  • Python supports two different built-in methods (sort and sorted method) to perform the sorting operation on any sequence.
  • The main difference between sort and sorted in Python is that sort function returns nothing and makes changes to the original sequence, while the sorted () function creates a new sequence type containing a sorted version of the given sequence.
  • A sorted function takes 3 parameters, i.e., iterable, key, and reverse, whereas a sort function takes 2 parameters, i.e., key and reverse.

Learn more:

  • Sort a String in Python
  • selection sort in Python
  • Sort Array in Python.
  • Sort Dictionary by Key in Python.
  • Sort Dictionary by Value in Python.

Чем отличается sort от sorted в питоне

Метод sort() и функция sorted() в Python: различия и применение

Метод sort() и функция sorted() в Python: различия и применение

10 апреля 2023
Оценки статьи
Еще никто не оценил статью

Сортировка — это процесс организации элементов коллекции в определенном порядке. В Python для сортировки коллекций можно использовать метод sort() для списков и функцию sorted() для различных итерируемых объектов. Обе эти функции позволяют сортировать элементы в порядке возрастания или убывания, в зависимости от указанного параметра.

Функция sorted() в Python

Функция sorted() возвращает новый отсортированный список (list) из переданной ей итерируемой коллекции. Функция возвращает отсортированный список, не меняя порядок элементов в исходной коллекции.

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

sorted(iterable, key=None, reverse=False) 

где:

  • iterable : обязательный параметр, представляющий итерируемый объект или встроенную последовательность, элементы которого требуется отсортировать.
  • key : необязательный параметр, представляющий функцию, которая определяет ключ сортировки. По умолчанию None , что означает сортировку по значениям элементов.
  • reverse : необязательный параметр, определяющий порядок сортировки. Если — reverse=True , то сортировка будет производиться в обратном порядке (от большего к меньшему), а если reverse=False (по умолчанию), то сортировка будет производиться в прямом порядке (от меньшего к большему).

Пример использования функции sorted():

numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5] sorted_numbers = sorted(numbers) print(sorted_numbers) # [1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]  fruits = ('apple', 'orange', 'banana', 'cherry', 'date', 'apricot') sorted_fruits = tuple(sorted(fruits)) print(sorted_fruits) # ('apple', 'apricot', 'banana', 'cherry', 'date', 'orange') 

Данный код использует функцию sorted() для сортировки различных коллекций: списка numbers , кортежа fruits и словаря word_count .

Для списка numbers функция sorted() сортирует числа в порядке возрастания и сохраняет отсортированный список в переменную sorted_numbers . Результат выводится на экран с помощью функции print() , и на экран выводится отсортированный список sorted_numbers , который выглядит следующим образом: [1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9] .

Для кортежа fruits функция sorted() сортирует строки в алфавитном порядке и сохраняет отсортированный список в переменную sorted_fruits . Затем с помощью функции tuple() отсортированный список sorted_fruits преобразуется обратно в кортеж. Результат выводится на экран с помощью функции print() , и на экран выводится отсортированный кортеж sorted_fruits , который выглядит следующим образом: (‘apple’, ‘apricot’, ‘banana’, ‘cherry’, ‘date’, ‘orange’) .

Для словаря word_count функция sorted() сортирует элементы словаря (пары «ключ-значение») на основе значений (в данном случае, по убыванию значения) с помощью аргумента key , указав лямбда-функцию, которая возвращает значение x[1] . Отсортированные пары «ключ-значение» сохраняются в переменную sorted_word_count . Затем с помощью функции dict() отсортированные пары «ключ-значение» преобразуются обратно в словарь. Результат выводится на экран с помощью функции print() , и на экран выводится отсортированный словарь sorted_word_count , который выглядит следующим образом:

Метод sort() в Python

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

list.sort(key=None, reverse=False) 

где:

  • key (опционально) — функция, которая указывает на то, по какому критерию должна выполняться сортировка. Если не указана, то сортировка будет производиться по значениям элементов списка по умолчанию.
  • reverse (опционально) — булевое значение, указывающее на то, нужно ли выполнять сортировку в обратном порядке (по умолчанию равно False , то есть сортировка выполняется в возрастающем порядке).

Сортировка списка чисел в возрастающем порядке:

numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5] numbers.sort() print(numbers) # [1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9] 

Данный код выполняет сортировку списка numbers в порядке возрастания с использованием метода sort() . Сначала создается список чисел numbers с заданными значениями: [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5] . Затем вызывается метод sort() на этом списке, который сортирует его в порядке возрастания. После сортировки список numbers будет изменен и содержать числа в отсортированном порядке: [1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9] .

Сортировка списка строк в алфавитном порядке:

fruits = ['apple', 'orange', 'banana', 'cherry', 'date', 'apricot'] fruits.sort() print(fruits) # ['apricot', 'banana', 'cherry', 'date', 'orange'] 

Данный код выполняет сортировку списка fruits в алфавитном порядке с использованием метода sort() . Сначала создается список фруктов fruits с заданными значениями: [‘apple’, ‘orange’, ‘banana’, ‘cherry’, ‘date’, ‘apricot’] . Затем вызывается метод sort() на этом списке, который сортирует его в алфавитном порядке (по порядку символов в строках) в возрастающем порядке. После сортировки список fruits будет изменен и содержать фрукты в алфавитном порядке: [‘apricot’, ‘banana’, ‘cherry’, ‘date’, ‘orange’] .

Сортировка списка объектов пользовательского класса Person по возрасту, используя функцию key:

class Person:  def __init__(self, name, age):  self.name = name self.age = age people = [Person("Alice", 25), Person("Bob", 30), Person("Charlie", 22), Person("Dave", 28)]  people.sort(key=lambda x: x.age)  for person in people:  print(person.name, person.age)  # Output: # Charlie 22 # Alice 25 # Dave 28 # Bob 30 

Данный код содержит определение класса Person и создание списка объектов этого класса people . Затем выполняется сортировка списка people по возрасту объектов с использованием метода sort() и аргумента key с лямбда-функцией lambda x: x.age .

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

class Person: — определение класса Person , который имеет два атрибута name и age . def __init__(self, name, age): — определение конструктора класса Person, который инициализирует атрибуты name и age объекта при его создании. self.name = name и self.age = age — установка значений атрибутов name и age объекта Person на основе переданных аргументов конструктора. people = [Person(«Alice», 25), Person(«Bob», 30), Person(«Charlie», 22), Person(«Dave», 28)] — создание списка people , содержащего объекты класса Person с заданными значениями имени и возраста. people.sort(key=lambda x: x.age) — сортировка списка people по возрасту объектов. Аргумент key указывает на функцию, которая будет использоваться для определения ключа сортировки. В данном случае, используется лямбда-функция lambda x: x.age , которая возвращает значение атрибута age объекта x , на основе которого будет выполняться сортировка. for person in people: — цикл for , который перебирает каждый объект person в списке people . print(person.name, person.age) — вывод имени и возраста каждого объекта person на экран. Объекты person будут выведены в порядке, определенном после сортировки, что будет отражать их возраст в порядке возрастания.

Сортировка в обратном порядке с помощью sort() и sorted()

Метод sort() и функция sorted() также имеют дополнительный параметр reverse , который может быть использован для сортировки коллекций в обратном порядке.

Например, если нам нужно отсортировать список чисел по убыванию, мы можем передать параметр reverse=True :

my_list = [4, 2, 1, 3, 5] sorted_list = sorted(my_list, reverse=True) print(sorted_list) # [5, 4, 3, 2, 1]  my_list.sort(reverse=True) print(my_list) # [5, 4, 3, 2, 1] 

Данный код выполняет сортировку списка my_list в обратном порядке с использованием функции sorted() и метода sort() с аргументом reverse=True .

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

my_list = [4, 2, 1, 3, 5] — создание списка my_list с данными числами. sorted_list = sorted(my_list, reverse=True) — вызов функции sorted() с аргументом my_list и аргументом reverse=True , что указывает на сортировку в обратном порядке. Результат сортировки сохраняется в переменной sorted_list . print(sorted_list) — вывод отсортированного списка на экран. Результат будет [5, 4, 3, 2, 1] , так как числа отсортированы в порядке убывания. my_list.sort(reverse=True) — вызов метода sort() на списке my_list с аргументом reverse=True , что указывает на сортировку списка в обратном порядке. print(my_list) — вывод списка my_list после сортировки на экран. Результат будет [5, 4, 3, 2, 1] , так как список my_list был отсортирован в обратном порядке с использованием метода sort() . Обратите внимание, что метод sort() выполняет сортировку «на месте», то есть изменяет сам список my_list без создания нового списка.

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

Еще один пример:

words = ['dog', 'cat', 'fish', 'elephant', 'lion'] sorted_words = sorted(words, reverse=True, key=len) print(sorted_words) # ['elephant', 'lion', 'fish', 'cat', 'dog']  words.sort(reverse=True, key=len) print(words) # ['elephant', 'lion', 'fish', 'cat', 'dog'] 

В этом примере мы отсортировали список words в обратном порядке по длине слов с помощью параметра key=len . Это означает, что более длинные слова будут идти раньше в списке.

Далее мы рассмотрим кастомные функции сортировки.

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

strings = ['some', 'example', 'words', 'here']  # сортировка по длине строк (от меньшей к большей) strings.sort(key=len) print(strings) # ['some', 'here', 'words', 'example']  # сортировка по длине строк (от большей к меньшей) sorted_strings = sorted(strings, key=len, reverse=True) print(sorted_strings) # ['example', 'words', 'some', 'here'] 

Данный код выполняет сортировку списка strings на основе длины строк в нем с использованием функции sorted() и метода sort() с ключом сортировки key=len и аргументом reverse=True для обратной сортировки.

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

strings = [‘some’, ‘example’, ‘words’, ‘here’] — создание списка strings с данными строками. strings.sort(key=len) — вызов метода sort() на списке strings с ключом сортировки key=len , что указывает на сортировку списка на основе длины строк в порядке возрастания. Результат сортировки сохраняется в самом списке strings . print(strings) — вывод отсортированного списка strings на экран. Результат будет [‘some’, ‘here’, ‘words’, ‘example’] , так как строки отсортированы в порядке возрастания длины. sorted_strings = sorted(strings, key=len, reverse=True) — вызов функции sorted() с аргументом strings , ключом сортировки key=len и аргументом reverse=True , что указывает на сортировку списка на основе длины строк в порядке убывания. Результат сортировки сохраняется в переменной sorted_strings . print(sorted_strings) — вывод отсортированного списка sorted_strings на экран. Результат будет [‘example’, ‘words’, ‘some’, ‘here’] , так как строки отсортированы в порядке убывания длины с использованием функции sorted() .

Сортировка чисел по четности в Python

numbers = [3, 5, 1, 2, 4, 6]  # сортировка чисел по четности (сначала нечетные, потом четные) numbers.sort(key=lambda x: x % 2) print(numbers) # [3, 5, 1, 2, 4, 6]  # сортировка чисел по четности (сначала четные, потом нечетные) sorted_numbers = sorted(numbers, key=lambda x: x % 2, reverse=True) print(sorted_numbers) # [6, 4, 2, 5, 3, 1] 

Данный код выполняет сортировку списка numbers на основе четности чисел в нем с использованием функции sorted() и метода sort() с ключом сортировки key=lambda x: x % 2 и аргументом reverse=True для обратной сортировки.

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

numbers = [3, 5, 1, 2, 4, 6] — создание списка numbers с данными числами. numbers.sort(key=lambda x: x % 2) — вызов метода sort() на списке numbers с ключом сортировки key=lambda x: x % 2 , что указывает на сортировку списка на основе остатка от деления чисел на 2. Таким образом, нечетные числа будут идти перед четными числами в порядке возрастания остатка от деления. Результат сортировки сохраняется в самом списке numbers . print(numbers) — вывод отсортированного списка numbers на экран. Результат будет [3, 5, 1, 2, 4, 6] , так как числа отсортированы в порядке нечетных чисел перед четными числами. sorted_numbers = sorted(numbers, key=lambda x: x % 2, reverse=True) — вызов функции sorted() с аргументом numbers , ключом сортировки key=lambda x: x % 2 и аргументом reverse=True , что указывает на сортировку списка на основе остатка от деления чисел на 2 в порядке убывания. Таким образом, четные числа будут идти перед нечетными числами. Результат сортировки сохраняется в переменной sorted_numbers . print(sorted_numbers) — вывод отсортированного списка sorted_numbers на экран. Результат будет [6, 4, 2, 5, 3, 1] , так как числа отсортированы в порядке четных чисел перед нечетными числами с использованием функции sorted() . Это только некоторые примеры кастомных сортировок, с помощью функций sort() и sorted() можно реализовать множество других сортировок в зависимости от конкретной задачи.

Меню категорий

    Загрузка категорий.

Как работает метод sort в python?

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

my_list = [7, 5, 8, 2, 11, 1, 14] my_list.sort() print(my_list) # [1, 2, 5, 7, 8, 11, 14] 

Сортировка в порядке убывания:

my_list = [7, 5, 8, 2, 11, 1, 14] my_list.sort(reverse=True) print(my_list) # [14, 11, 8, 7, 5, 2, 1] 

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

my_list = [7, 5, 8, 2, 11, 1, 14] my_list.sort(key=lambda x: x%2) 

в данном случае, сначала в отсортированном списке буду четные, а потом нечетные элементы.

What is the difference between list.sort() and sorted() in Python?

Python provides two ways to sort a list, the built-in list method list.sort() and the built-in function sorted() . Although both will sort the elements of a list, if used incorrectly they can produce unexpected or undesired results.

Differences and similarities

The primary difference between the two is that list.sort() will sort the list in-place, mutating its indexes and returning None , whereas sorted() will return a new sorted list leaving the original list unchanged. Another difference is that sorted() accepts any iterable while list.sort() is a method of the list class and can only be used with lists.

nums = [2, 3, 1, 5, 6, 4, 0] print(sorted(nums)) # [0, 1, 2, 3, 4, 5, 6] print(nums) # [2, 3, 1, 5, 6, 4, 0] print(nums.sort()) # None print(nums) # [0, 1, 2, 3, 4, 5, 6]

Both list.sort() and sorted() have the same key and reverse optional arguments and can be called on each list element prior to making comparisons.

When to use each one

list.sort() should be used whenever mutating the list is intended and retrieving the original order of the elements is not desired. On the other hand, sorted() should be used when the object to be sorted is an iterable (e.g. list, tuple, dictionary, string) and the desired outcome is a sorted list containing all elements.

Last updated: June 12, 2021 · View On GitHub

More like this

  • Python · June 12, 2021

What is the difference between lists and tuples in Python?

Learn how Python’s lists and tuples are different and level up your code today.
Python · November 2, 2020

List difference based on function

Returns the difference between two lists, after applying the provided function to each list element of both.
Python · November 2, 2020

List symmetric difference based on function

Returns the symmetric difference between two lists, after applying the provided function to each list element of both.
Python · January 15, 2023

How can I check if a Python list is empty?

Hello! �� I’m Angelos, a professional software engineer, based in Greece. I work on 30 seconds of code in my free time to create the best resource I’ve never had when I started out as a developer.

Start typing a keyphrase to see matching snippets.

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

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