HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-02-21
1 <p><a>#подборки</a></p>
1 <p><a>#подборки</a></p>
2 <ul><li>14 май 2024</li>
2 <ul><li>14 май 2024</li>
3 <li>0</li>
3 <li>0</li>
4 </ul><p>Как выстроить по порядку элементы списков, множеств, строк, кортежей.</p>
4 </ul><p>Как выстроить по порядку элементы списков, множеств, строк, кортежей.</p>
5 <p>Иллюстрация: Катя Павловская для Skillbox Media</p>
5 <p>Иллюстрация: Катя Павловская для Skillbox Media</p>
6 <p>Программист, консультант, специалист по документированию. Легко и доступно рассказывает о сложных вещах в программировании и дизайне.</p>
6 <p>Программист, консультант, специалист по документированию. Легко и доступно рассказывает о сложных вещах в программировании и дизайне.</p>
7 <p>Продолжаем разбираться в нюансах работы с данными в Python. Мы уже успели поговорить о <a>списках</a>,<a>словарях</a>,<a>кортежах</a>и <a>множествах</a> - теперь разберёмся, как доставать из них элементы в любом удобном порядке. В этом нам помогут функции сортировки.</p>
7 <p>Продолжаем разбираться в нюансах работы с данными в Python. Мы уже успели поговорить о <a>списках</a>,<a>словарях</a>,<a>кортежах</a>и <a>множествах</a> - теперь разберёмся, как доставать из них элементы в любом удобном порядке. В этом нам помогут функции сортировки.</p>
8 <p>Сортировка - это когда мы упорядочиваем элементы в итерируемом объекте по возрастанию, убыванию или другому критерию. В Python есть два способа сортировки: с помощью встроенной функции sorted() и с использованием метода списков .sort(). Рассмотрим их подробнее.</p>
8 <p>Сортировка - это когда мы упорядочиваем элементы в итерируемом объекте по возрастанию, убыванию или другому критерию. В Python есть два способа сортировки: с помощью встроенной функции sorted() и с использованием метода списков .sort(). Рассмотрим их подробнее.</p>
9 <p><strong>Содержание</strong></p>
9 <p><strong>Содержание</strong></p>
10 <ul><li><a>Основы сортировки в Python</a></li>
10 <ul><li><a>Основы сортировки в Python</a></li>
11 <li><a>Примеры сортировки разных итерируемых объектов</a></li>
11 <li><a>Примеры сортировки разных итерируемых объектов</a></li>
12 <li><a>Сортировка списка по возрастанию</a></li>
12 <li><a>Сортировка списка по возрастанию</a></li>
13 <li><a>Сортировка по убыванию</a></li>
13 <li><a>Сортировка по убыванию</a></li>
14 <li><a>Сортировка по ключу</a></li>
14 <li><a>Сортировка по ключу</a></li>
15 <li><a>Стабильность сортировки</a></li>
15 <li><a>Стабильность сортировки</a></li>
16 <li><a>Резюме</a></li>
16 <li><a>Резюме</a></li>
17 </ul><p>Эксперт Skillbox по компьютерным сетям и кибербезопасности. Автор телеграм-канала "<a>Кудрявый микрофон</a>".</p>
17 </ul><p>Эксперт Skillbox по компьютерным сетям и кибербезопасности. Автор телеграм-канала "<a>Кудрявый микрофон</a>".</p>
18 <p>Функция sorted() - это универсальный метод сортировки. В качестве обязательного параметра она принимает любой итерируемый объект и возвращает отсортированный список, созданный из его элементов. Эта функция не меняет исходный объект, а создаёт новый.</p>
18 <p>Функция sorted() - это универсальный метод сортировки. В качестве обязательного параметра она принимает любой итерируемый объект и возвращает отсортированный список, созданный из его элементов. Эта функция не меняет исходный объект, а создаёт новый.</p>
19 <p>Синтаксис выглядит так:</p>
19 <p>Синтаксис выглядит так:</p>
20 sorted(iterable, key=None, reverse=False)<p>Параметры функции:</p>
20 sorted(iterable, key=None, reverse=False)<p>Параметры функции:</p>
21 <ul><li>iterable - обязательный. В него передаётся итерируемый объект, который вы хотите отсортировать (список, кортеж, строка, множество, замороженное множество).</li>
21 <ul><li>iterable - обязательный. В него передаётся итерируемый объект, который вы хотите отсортировать (список, кортеж, строка, множество, замороженное множество).</li>
22 <li>key - необязательный. Функция одного аргумента, которая будет применена к каждому элементу (по умолчанию None).</li>
22 <li>key - необязательный. Функция одного аргумента, которая будет применена к каждому элементу (по умолчанию None).</li>
23 <li>reverse - необязательный. По умолчанию sorted() сортирует объект по возрастанию - но если поставить reverse=True, можно расположить элементы в обратном порядке.</li>
23 <li>reverse - необязательный. По умолчанию sorted() сортирует объект по возрастанию - но если поставить reverse=True, можно расположить элементы в обратном порядке.</li>
24 </ul><p>Отсортируем список с помощью функции sorted():</p>
24 </ul><p>Отсортируем список с помощью функции sorted():</p>
25 l = ['a', 'v', 'r', 'h', 'v', 'c', 'd', 'y', 'g', 'b'] print(sorted(l)) # Результат: # ['a', 'b', 'c', 'd', 'g', 'h', 'r', 'v', 'v', 'y'] print(l) # Результат: # ['a', 'v', 'r', 'h', 'v', 'c', 'd', 'y', 'g', 'b']<p>Видим, что в результате сортировки появился новый список, а исходный не изменился.</p>
25 l = ['a', 'v', 'r', 'h', 'v', 'c', 'd', 'y', 'g', 'b'] print(sorted(l)) # Результат: # ['a', 'b', 'c', 'd', 'g', 'h', 'r', 'v', 'v', 'y'] print(l) # Результат: # ['a', 'v', 'r', 'h', 'v', 'c', 'd', 'y', 'g', 'b']<p>Видим, что в результате сортировки появился новый список, а исходный не изменился.</p>
26 <p>Символы в Python сортируются по таблице элементов ASCII: символ с меньшим значением ASCII будет помещён раньше, чем символ с большим значением.</p>
26 <p>Символы в Python сортируются по таблице элементов ASCII: символ с меньшим значением ASCII будет помещён раньше, чем символ с большим значением.</p>
27 <p>Для сортировки элементов списка существует метод списков .sort(). В отличие от функции sorted(), он изменяет сам список, в котором он вызван, и не возвращает никакого значения (точнее, возвращает None).</p>
27 <p>Для сортировки элементов списка существует метод списков .sort(). В отличие от функции sorted(), он изменяет сам список, в котором он вызван, и не возвращает никакого значения (точнее, возвращает None).</p>
28 <p>Синтаксис .sort():</p>
28 <p>Синтаксис .sort():</p>
29 list.sort(key=None, reverse=False)<p>Вместо list нужно указать название списка, к которому применяется метод.</p>
29 list.sort(key=None, reverse=False)<p>Вместо list нужно указать название списка, к которому применяется метод.</p>
30 <p>Параметры у метода .sort() необязательные. Они аналогичны параметрам sorted():</p>
30 <p>Параметры у метода .sort() необязательные. Они аналогичны параметрам sorted():</p>
31 <ul><li>key - определяет небольшую функцию, в качестве аргумента принимающую элемент списка. Для каждого элемента она создаёт ключ сравнения - значение, по которому будут сравниваться эти элементы (по умолчанию - None).</li>
31 <ul><li>key - определяет небольшую функцию, в качестве аргумента принимающую элемент списка. Для каждого элемента она создаёт ключ сравнения - значение, по которому будут сравниваться эти элементы (по умолчанию - None).</li>
32 <li>reverse - булевый аргумент, принимающий значения True или False. Если установлено значение True, список сортируется в обратном порядке (по умолчанию - False).</li>
32 <li>reverse - булевый аргумент, принимающий значения True или False. Если установлено значение True, список сортируется в обратном порядке (по умолчанию - False).</li>
33 </ul><p>Рассмотрим на примере, как работает метод .sort():</p>
33 </ul><p>Рассмотрим на примере, как работает метод .sort():</p>
34 lst = ['a', 'v', 'r', 'h', 'v', 'c', 'd', 'y', 'g', 'b'] print(lst.sort()) # Результат: None print(lst) # Результат: # ['a', 'b', 'c', 'd', 'g', 'h', 'r', 'v', 'v', 'y']<p>Как мы видим, метод lst.sort() в результате выполнения вернул None, а сам список lst изменился - теперь его элементы отсортированы по возрастанию.</p>
34 lst = ['a', 'v', 'r', 'h', 'v', 'c', 'd', 'y', 'g', 'b'] print(lst.sort()) # Результат: None print(lst) # Результат: # ['a', 'b', 'c', 'd', 'g', 'h', 'r', 'v', 'v', 'y']<p>Как мы видим, метод lst.sort() в результате выполнения вернул None, а сам список lst изменился - теперь его элементы отсортированы по возрастанию.</p>
35 <p><strong>Важно</strong>: сортировать можно только те итерируемые объекты, которые содержат однотипные элементы. Если в списке содержатся элементы разных типов и между ними не определена операция сравнения, при выполнении .sort() или sorted() возникнет исключение TypeError.</p>
35 <p><strong>Важно</strong>: сортировать можно только те итерируемые объекты, которые содержат однотипные элементы. Если в списке содержатся элементы разных типов и между ними не определена операция сравнения, при выполнении .sort() или sorted() возникнет исключение TypeError.</p>
36 <p><strong>Сортировка строк.</strong>Отсортируем строку с помощью функции sorted():</p>
36 <p><strong>Сортировка строк.</strong>Отсортируем строку с помощью функции sorted():</p>
37 s = sorted('Hello, world!') print(s) # Результат выполнения: # [' ', '!', ',', 'H', 'd', 'e', 'l', 'l', 'l', 'o', 'o', 'r', 'w']<p>Мы получили список символов, отсортированных в порядке возрастания значений ASCII.</p>
37 s = sorted('Hello, world!') print(s) # Результат выполнения: # [' ', '!', ',', 'H', 'd', 'e', 'l', 'l', 'l', 'o', 'o', 'r', 'w']<p>Мы получили список символов, отсортированных в порядке возрастания значений ASCII.</p>
38 <p><strong>Сортировка кортежа.</strong>Так будет выглядеть результат сортировки кортежа, элементы которого - числа:</p>
38 <p><strong>Сортировка кортежа.</strong>Так будет выглядеть результат сортировки кортежа, элементы которого - числа:</p>
39 s = sorted((7, 28, 4, 22, 6, 10, 7, 18)) print(s) # Результат выполнения: # [4, 6, 7, 7, 10, 18, 22, 28]<p>В примере выше мы создали список, в котором числа отсортированы по возрастанию.</p>
39 s = sorted((7, 28, 4, 22, 6, 10, 7, 18)) print(s) # Результат выполнения: # [4, 6, 7, 7, 10, 18, 22, 28]<p>В примере выше мы создали список, в котором числа отсортированы по возрастанию.</p>
40 <p><strong>Сортировка множества.</strong>Результат сортировки множества, состоящего из строк:</p>
40 <p><strong>Сортировка множества.</strong>Результат сортировки множества, состоящего из строк:</p>
41 s = sorted({'attfgl', '#aghj', '1', '120', '3', '23', '1000', '4g', 'ehklgf', 'b', 'йц'}) print(s) # Результат выполнения: # ['#aghj', '1', '1000', '120', '23', '3', '4g', 'attfgl', 'b', 'ehklgf', 'йц']<p>Результат - отсортированный список строк.</p>
41 s = sorted({'attfgl', '#aghj', '1', '120', '3', '23', '1000', '4g', 'ehklgf', 'b', 'йц'}) print(s) # Результат выполнения: # ['#aghj', '1', '1000', '120', '23', '3', '4g', 'attfgl', 'b', 'ehklgf', 'йц']<p>Результат - отсортированный список строк.</p>
42 <p><strong>Сортировка словарей.</strong>В Python словари - это неупорядоченные структуры данных. В них есть быстрый доступ к элементам по ключу, но непосредственная сортировка элементов невозможна.</p>
42 <p><strong>Сортировка словарей.</strong>В Python словари - это неупорядоченные структуры данных. В них есть быстрый доступ к элементам по ключу, но непосредственная сортировка элементов невозможна.</p>
43 <p>Если мы применим функцию sorted() к словарю, то получим отсортированный список ключей кода в случае, когда ключи словаря одного типа. Иначе возникнет ошибка TypeError.</p>
43 <p>Если мы применим функцию sorted() к словарю, то получим отсортированный список ключей кода в случае, когда ключи словаря одного типа. Иначе возникнет ошибка TypeError.</p>
44 original_dict = {'b': 1, 'a': 2, 'c': 3} sorted_items = sorted(original_dict) print(sorted_items) # Результат: ['a', 'b', 'c']<p>Отсортировать словарь можно с помощью функции sorted() совместно с методом словаря .items(). Этот метод возвращает ключи и значения словаря в виде набора кортежей.</p>
44 original_dict = {'b': 1, 'a': 2, 'c': 3} sorted_items = sorted(original_dict) print(sorted_items) # Результат: ['a', 'b', 'c']<p>Отсортировать словарь можно с помощью функции sorted() совместно с методом словаря .items(). Этот метод возвращает ключи и значения словаря в виде набора кортежей.</p>
45 original_dict = {'b': 1, 'a': 2, 'c': 3} # Сортировка словаря по ключам sorted_items = sorted(original_dict.items()) print(sorted_items) # [('a', 2), ('b', 1), ('c', 3)] # Преобразование обратно в словарь sorted_dict = dict(sorted_items) print(sorted_dict) # {'a': 2, 'b': 1, 'c': 3}<p>Сначала мы преобразуем набор кортежей original_dict.items() с помощью функции sorted() в список, отсортированный по ключам. Затем преобразуем список обратно в словарь с помощью функции dict().</p>
45 original_dict = {'b': 1, 'a': 2, 'c': 3} # Сортировка словаря по ключам sorted_items = sorted(original_dict.items()) print(sorted_items) # [('a', 2), ('b', 1), ('c', 3)] # Преобразование обратно в словарь sorted_dict = dict(sorted_items) print(sorted_dict) # {'a': 2, 'b': 1, 'c': 3}<p>Сначала мы преобразуем набор кортежей original_dict.items() с помощью функции sorted() в список, отсортированный по ключам. Затем преобразуем список обратно в словарь с помощью функции dict().</p>
46 <p>На направление сортировки влияет необязательный параметр reverse. Если reverse=False (значение по умолчанию), то данные будут сортироваться от большего к меньшему.</p>
46 <p>На направление сортировки влияет необязательный параметр reverse. Если reverse=False (значение по умолчанию), то данные будут сортироваться от большего к меньшему.</p>
47 <p><strong>Числовые данные.</strong>Сортируются по возрастанию их значений:</p>
47 <p><strong>Числовые данные.</strong>Сортируются по возрастанию их значений:</p>
48 lst = [10, 8, 14, 0, 5, 4, 6, 29] lst.sort() print(lst) # Результат: # [0, 4, 5, 6, 8, 10, 14, 29]<p>Но если мы переведём числовые значения в строки, результат будет другой:</p>
48 lst = [10, 8, 14, 0, 5, 4, 6, 29] lst.sort() print(lst) # Результат: # [0, 4, 5, 6, 8, 10, 14, 29]<p>Но если мы переведём числовые значения в строки, результат будет другой:</p>
49 lst = ['10', '8', '14', '0', '5', '4', '6', '29'] lst.sort() print(lst) # Результат: # ['0', '10', '14', '29', '4', '5', '6', '8']<p>Это происходит потому, что сортируемые строки сравниваются посимвольно, начиная с первого символа. Если пара символов не равна, тогда результатом сравнения строк становится результат сравнения этой пары, например: '5' &gt; '10', а '29' &lt; '6'.</p>
49 lst = ['10', '8', '14', '0', '5', '4', '6', '29'] lst.sort() print(lst) # Результат: # ['0', '10', '14', '29', '4', '5', '6', '8']<p>Это происходит потому, что сортируемые строки сравниваются посимвольно, начиная с первого символа. Если пара символов не равна, тогда результатом сравнения строк становится результат сравнения этой пары, например: '5' &gt; '10', а '29' &lt; '6'.</p>
50 <p><strong>Символьные данные.</strong>Сортируются в порядке возрастания значений ASCII: символ с меньшим значением ASCII будет помещён раньше, чем символ с большим значением ASCII.</p>
50 <p><strong>Символьные данные.</strong>Сортируются в порядке возрастания значений ASCII: символ с меньшим значением ASCII будет помещён раньше, чем символ с большим значением ASCII.</p>
51 print(sorted(['a', 'v', 'r', 'A', 'd', 'g', 'b', '0', '2', '#', '%', 'ж', 'й'])) # Результат сортировки: # ['#', '%', '0', '2', 'A', 'a', 'b', 'd', 'g', 'r', 'v', 'ж', 'й']<p>Большие и маленькие буквы считаются разными символами (коды ASCII для 'A' и 'a' разные, причём код 'A' меньше, чем код 'a').</p>
51 print(sorted(['a', 'v', 'r', 'A', 'd', 'g', 'b', '0', '2', '#', '%', 'ж', 'й'])) # Результат сортировки: # ['#', '%', '0', '2', 'A', 'a', 'b', 'd', 'g', 'r', 'v', 'ж', 'й']<p>Большие и маленькие буквы считаются разными символами (коды ASCII для 'A' и 'a' разные, причём код 'A' меньше, чем код 'a').</p>
52 <p>Символы, отличные от букв (например, пробелы, знаки пунктуации, символы табуляции), также имеют коды ASCII и участвуют в сортировке.</p>
52 <p>Символы, отличные от букв (например, пробелы, знаки пунктуации, символы табуляции), также имеют коды ASCII и участвуют в сортировке.</p>
53 <p><strong>Булевы значения.</strong>False идёт перед True, так как их численные эквиваленты - 0 и 1 соответственно.</p>
53 <p><strong>Булевы значения.</strong>False идёт перед True, так как их численные эквиваленты - 0 и 1 соответственно.</p>
54 booleans = [True, False, True, False, True] print(sorted(booleans)) # Результат: [False, False, True, True, True]<p>Если параметр reverse = False, то сортировка идёт в обратном порядке - по убыванию элементов:</p>
54 booleans = [True, False, True, False, True] print(sorted(booleans)) # Результат: [False, False, True, True, True]<p>Если параметр reverse = False, то сортировка идёт в обратном порядке - по убыванию элементов:</p>
55 l = ['a', 'v', 'r', 'h', 'v', 'c', 'd', 'y', 'g', 'b'] print(sorted(l, reverse = True)) # Результат: # ['y', 'v', 'v', 'r', 'h', 'g', 'd', 'c', 'b', 'a'] l.sort(reverse = True) print(l) # Результат тот же: #['y', 'v', 'v', 'r', 'h', 'g', 'd', 'c', 'b', 'a']<p>Ключ сортировки key в Python может быть любой функцией, которая применяется к каждому элементу в списке перед сравнением.</p>
55 l = ['a', 'v', 'r', 'h', 'v', 'c', 'd', 'y', 'g', 'b'] print(sorted(l, reverse = True)) # Результат: # ['y', 'v', 'v', 'r', 'h', 'g', 'd', 'c', 'b', 'a'] l.sort(reverse = True) print(l) # Результат тот же: #['y', 'v', 'v', 'r', 'h', 'g', 'd', 'c', 'b', 'a']<p>Ключ сортировки key в Python может быть любой функцией, которая применяется к каждому элементу в списке перед сравнением.</p>
56 <p>Принцип работы такой: к каждому элементу в списке применяется какая-то функция, а потом результаты этих функций сравниваются для определения порядка элементов.</p>
56 <p>Принцип работы такой: к каждому элементу в списке применяется какая-то функция, а потом результаты этих функций сравниваются для определения порядка элементов.</p>
57 <p>Разберём несколько примеров.</p>
57 <p>Разберём несколько примеров.</p>
58 <p><strong>Сортировка по длине.</strong>Если нужно отсортировать список строк в порядке возрастания длины строки, в качестве ключа сортировки используем функцию len.</p>
58 <p><strong>Сортировка по длине.</strong>Если нужно отсортировать список строк в порядке возрастания длины строки, в качестве ключа сортировки используем функцию len.</p>
59 words = ['cat', 'hamster', 'squirrel', 'rabbit'] sorted_words = sorted(words, key=len) print(sorted_words) # Результат: # ['cat', 'rabbit', 'hamster', 'squirrel']<p>Слово 'cat' - первое в списке, потому что оно самое короткое, а 'squirrel' - последнее, так как оно самое длинное.</p>
59 words = ['cat', 'hamster', 'squirrel', 'rabbit'] sorted_words = sorted(words, key=len) print(sorted_words) # Результат: # ['cat', 'rabbit', 'hamster', 'squirrel']<p>Слово 'cat' - первое в списке, потому что оно самое короткое, а 'squirrel' - последнее, так как оно самое длинное.</p>
60 <p><strong>Сортировка c помощью собственной функции.</strong>Например, можно создать функцию, которая возвращает последний символ строки, и использовать её в качестве ключа сортировки.</p>
60 <p><strong>Сортировка c помощью собственной функции.</strong>Например, можно создать функцию, которая возвращает последний символ строки, и использовать её в качестве ключа сортировки.</p>
61 def last_char(s): return s[-1] words = ['cat', 'hamster', 'squirrel', 'rabbit'] sorted_words = sorted(words, key=last_char) print(sorted_words) # Результат: ['squirrel', 'hamster', 'cat', 'rabbit']<p>Код сравнивает последние символы строк и сортирует список по их возрастанию.</p>
61 def last_char(s): return s[-1] words = ['cat', 'hamster', 'squirrel', 'rabbit'] sorted_words = sorted(words, key=last_char) print(sorted_words) # Результат: ['squirrel', 'hamster', 'cat', 'rabbit']<p>Код сравнивает последние символы строк и сортирует список по их возрастанию.</p>
62 <p><strong>Сортировка с помощью лямбда-функции.</strong>lambda в Python - это анонимная функция, принимающая любое количество аргументов, но имеющая только одно выражение, которое выполняется и возвращает результат. В качестве ключа сортировки используется функция с одним аргументом.</p>
62 <p><strong>Сортировка с помощью лямбда-функции.</strong>lambda в Python - это анонимная функция, принимающая любое количество аргументов, но имеющая только одно выражение, которое выполняется и возвращает результат. В качестве ключа сортировки используется функция с одним аргументом.</p>
63 <p>Ключ сортировки особенно полезен, когда нам нужно сортировать сложные структуры данных - например, списки словарей.</p>
63 <p>Ключ сортировки особенно полезен, когда нам нужно сортировать сложные структуры данных - например, списки словарей.</p>
64 people = [ {'name': 'Helen', 'age': 24}, {'name': 'John', 'age': 21}, {'name': 'Sam', 'age': 19} ] sorted_people = sorted(people, key=lambda p: p['age']) print(sorted_people) # Результат: [{'name': 'Sam', 'age': 19}, {'name': 'John', 'age': 21}, {'name': 'Helen', 'age': 24}]<p>В этом примере мы используем лямбда-функцию lambda p: p['age'], которая возвращает возраст каждого человека, и таким образом сортируем записи о людях в порядке увеличения их возраста.</p>
64 people = [ {'name': 'Helen', 'age': 24}, {'name': 'John', 'age': 21}, {'name': 'Sam', 'age': 19} ] sorted_people = sorted(people, key=lambda p: p['age']) print(sorted_people) # Результат: [{'name': 'Sam', 'age': 19}, {'name': 'John', 'age': 21}, {'name': 'Helen', 'age': 24}]<p>В этом примере мы используем лямбда-функцию lambda p: p['age'], которая возвращает возраст каждого человека, и таким образом сортируем записи о людях в порядке увеличения их возраста.</p>
65 <p><strong>Сортировка со встроенными функциями.</strong>В Python есть встроенные функции, которые можно использовать в качестве ключей. Например, функцию abs можно использовать для сортировки чисел не по их реальному, а по абсолютному значению. Абсолютное значение - это его величина без учёта знака. Например, абсолютное значение числа 5 равно 5, а абсолютное значение числа -3 равно 3.</p>
65 <p><strong>Сортировка со встроенными функциями.</strong>В Python есть встроенные функции, которые можно использовать в качестве ключей. Например, функцию abs можно использовать для сортировки чисел не по их реальному, а по абсолютному значению. Абсолютное значение - это его величина без учёта знака. Например, абсолютное значение числа 5 равно 5, а абсолютное значение числа -3 равно 3.</p>
66 numbers = [1, -2, 3, -4, -5] sorted_numbers = sorted(numbers, key=abs) print(sorted_numbers) # Результат: [1, -2, 3, -4, -5]<p>Сортировка в Python по умолчанию является стабильной. Это относится и функции sorted(), и к методу .sort().</p>
66 numbers = [1, -2, 3, -4, -5] sorted_numbers = sorted(numbers, key=abs) print(sorted_numbers) # Результат: [1, -2, 3, -4, -5]<p>Сортировка в Python по умолчанию является стабильной. Это относится и функции sorted(), и к методу .sort().</p>
67 <p>Стабильность означает, что, когда два элемента имеют одинаковые ключи сортировки, их относительный порядок сохраняется. Это важно при последовательной сортировке - например, если у нас есть список, включающий в себя элементы с двумя и более полями. Если мы сначала отсортируем список по второму полю, а затем по первому, то порядок сортировки по второму полю сохранится.</p>
67 <p>Стабильность означает, что, когда два элемента имеют одинаковые ключи сортировки, их относительный порядок сохраняется. Это важно при последовательной сортировке - например, если у нас есть список, включающий в себя элементы с двумя и более полями. Если мы сначала отсортируем список по второму полю, а затем по первому, то порядок сортировки по второму полю сохранится.</p>
68 <p>Например:</p>
68 <p>Например:</p>
69 color = [('green', 3), ('red', 1), ('blue', 2), ('green', 1), ('red', 2), ('blue', 1), ('green', 2)] sorted_color = sorted(color, key=lambda x: x[1]) # Сортируем по второму ключу print(sorted_color) # Результат: [('red', 1), ('green', 1), ('blue', 1), ('blue', 2), ('red', 2), ('green', 2), ('green', 3)] sorted_color = sorted(sorted_color, key=lambda x: x[0]) # Сортируем по первому ключу print(sorted_color) # Результат: [('blue', 1), ('blue', 2), ('green', 1), ('green', 2), ('green', 3), ('red', 1), ('red', 2)]<p>Сначала мы сортируем список кортежей по второму элементу (номеру) в порядке возрастания - от 1 до 3. Затем сортируем по первому ключу - color.</p>
69 color = [('green', 3), ('red', 1), ('blue', 2), ('green', 1), ('red', 2), ('blue', 1), ('green', 2)] sorted_color = sorted(color, key=lambda x: x[1]) # Сортируем по второму ключу print(sorted_color) # Результат: [('red', 1), ('green', 1), ('blue', 1), ('blue', 2), ('red', 2), ('green', 2), ('green', 3)] sorted_color = sorted(sorted_color, key=lambda x: x[0]) # Сортируем по первому ключу print(sorted_color) # Результат: [('blue', 1), ('blue', 2), ('green', 1), ('green', 2), ('green', 3), ('red', 1), ('red', 2)]<p>Сначала мы сортируем список кортежей по второму элементу (номеру) в порядке возрастания - от 1 до 3. Затем сортируем по первому ключу - color.</p>
70 <p>Поскольку 'blue' меньше, чем 'green' и 'red', все кортежи 'blue' стоят первыми, затем идут кортежи 'green', а после - 'red'. Но внутри каждой группы кортежей с одинаковым первым элементом порядок остался таким же, как после первой сортировки (по номеру). Это показывает стабильность сортировки.</p>
70 <p>Поскольку 'blue' меньше, чем 'green' и 'red', все кортежи 'blue' стоят первыми, затем идут кортежи 'green', а после - 'red'. Но внутри каждой группы кортежей с одинаковым первым элементом порядок остался таким же, как после первой сортировки (по номеру). Это показывает стабильность сортировки.</p>
71 <ul><li>Любые итерируемые объекты в Python можно сортировать с помощью функции sorted(), а списки - с помощью метода .sort(). Функция sorted() возвращает отсортированный список, состоящий из элементов итерируемого объекта, а сам объект не меняется. Метод списка .sort() изменяет сам список.</li>
71 <ul><li>Любые итерируемые объекты в Python можно сортировать с помощью функции sorted(), а списки - с помощью метода .sort(). Функция sorted() возвращает отсортированный список, состоящий из элементов итерируемого объекта, а сам объект не меняется. Метод списка .sort() изменяет сам список.</li>
72 <li>По умолчанию сортировка происходит в порядке возрастания, но можно провести и в обратном - с помощью аргумента reverse, которому нужно передать значение True.</li>
72 <li>По умолчанию сортировка происходит в порядке возрастания, но можно провести и в обратном - с помощью аргумента reverse, которому нужно передать значение True.</li>
73 <li>Чтобы определить свои собственные критерии сортировки, можно использовать ключ сортировки.</li>
73 <li>Чтобы определить свои собственные критерии сортировки, можно использовать ключ сортировки.</li>
74 <li>Разные структуры данных требуют разных методов сортировки, поэтому всегда стоит заранее обдумать, какие данные предстоит сортировать и каким методом. При работе с большим объёмом данных нужно учитывать, что одни методы могут быть более эффективными, чем другие.</li>
74 <li>Разные структуры данных требуют разных методов сортировки, поэтому всегда стоит заранее обдумать, какие данные предстоит сортировать и каким методом. При работе с большим объёмом данных нужно учитывать, что одни методы могут быть более эффективными, чем другие.</li>
75 <li>Например, если нужно только отсортировать список, не сохраняя его оригинальное значение, то лучше использовать метод .sort() - это сэкономит память. Если же при сортировке нужно сохранить исходный объект, то используется функция sorted().</li>
75 <li>Например, если нужно только отсортировать список, не сохраняя его оригинальное значение, то лучше использовать метод .sort() - это сэкономит память. Если же при сортировке нужно сохранить исходный объект, то используется функция sorted().</li>
76 </ul><p>Python для всех</p>
76 </ul><p>Python для всех</p>
77 <p>Вы освоите Python на практике и создадите проекты для портфолио - телеграм-бот, веб-парсер и сайт с нуля. А ещё получите готовый план выхода на удалёнку и фриланс. Спикер - руководитель отдела разработки в "Сбере".</p>
77 <p>Вы освоите Python на практике и создадите проекты для портфолио - телеграм-бот, веб-парсер и сайт с нуля. А ещё получите готовый план выхода на удалёнку и фриланс. Спикер - руководитель отдела разработки в "Сбере".</p>
78 <p><a>Пройти бесплатно</a></p>
78 <p><a>Пройти бесплатно</a></p>
79 <a><b>Бесплатный курс по разработке на Python ➞</b>Пройдите бесплатный курс по Python и создайте с нуля телеграм-бот, веб-парсер и сайт. Спикер - руководитель отдела разработки в "Сбере". Пройти курс</a>
79 <a><b>Бесплатный курс по разработке на Python ➞</b>Пройдите бесплатный курс по Python и создайте с нуля телеграм-бот, веб-парсер и сайт. Спикер - руководитель отдела разработки в "Сбере". Пройти курс</a>