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

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