В Python есть два основных способа сортировки списка:
list.sort()
: Сортирует список на месте (изменяет исходный список). my_list.sort()
sorted(list)
: Возвращает новый отсортированный список, не изменяя исходный. new_list = sorted(my_list)
Оба метода по умолчанию сортируют по возрастанию. Для сортировки по убыванию, используйте reverse=True
: my_list.sort(reverse=True)
или sorted(my_list, reverse=True)
Существует несколько способов отсортировать список в Python:
1. Метод .sort()
(сортировка на месте):
Этот метод сортирует список непосредственно, изменяя его исходный порядок. Он не возвращает новый список, а возвращает None
. Это наиболее эффективный способ сортировки, если вам не нужно сохранять исходный список.
my_list = [3, 1, 4, 1, 5, 9, 2, 6]
my_list.sort() # Сортирует список my_list
print(my_list) # Вывод: [1, 1, 2, 3, 4, 5, 6, 9]
my_list.sort(reverse=True) # Сортировка в обратном порядке
print(my_list) # Вывод: [9, 6, 5, 4, 3, 2, 1, 1]
Ключевые аргументы sort()
:
key
: Функция, принимающая элемент списка в качестве аргумента и возвращающая значение, используемое для сравнения при сортировке. Например, можно сортировать список строк по их длине: my_list.sort(key=len)
reverse
: Булево значение, указывающее, сортировать ли в обратном порядке (True
) или в прямом порядке (False
, по умолчанию).2. Функция sorted()
(создание нового списка):
Эта функция создает новый отсортированный список, не изменяя исходный. Она возвращает новый отсортированный список.
my_list = [3, 1, 4, 1, 5, 9, 2, 6]
new_list = sorted(my_list) # Создает новый отсортированный список
print(my_list) # Вывод: [3, 1, 4, 1, 5, 9, 2, 6] (исходный список не изменен)
print(new_list) # Вывод: [1, 1, 2, 3, 4, 5, 6, 9]
new_list_reverse = sorted(my_list, reverse=True)
print(new_list_reverse) # Вывод: [9, 6, 5, 4, 3, 2, 1, 1]
Функция sorted()
принимает те же ключевые аргументы key
и reverse
, что и метод .sort()
.
Какой способ выбрать?
.sort()
, так как это более эффективно с точки зрения использования памяти.sorted()
.Примеры использования аргумента key
:
# Сортировка списка строк по длине
strings = ["apple", "banana", "kiwi", "orange"]
strings.sort(key=len)
print(strings) # Вывод: ['kiwi', 'apple', 'banana', 'orange']
# Сортировка списка кортежей по второму элементу
tuples = [(1, 'z'), (2, 'a'), (3, 'b')]
tuples.sort(key=lambda x: x[1]) # Сортировка по второму элементу кортежа
print(tuples) # Вывод: [(2, 'a'), (3, 'b'), (1, 'z')]