Найти в Дзене

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

В Python есть два основных способа сортировки списков: List. sort(): Сортировка “на месте” (in-place) Этот метод сортирует исходный список напрямую, то есть Изменяет его. Он не создает новый отсортированный список. Этот метод возвращает None. My_list = [3, 1, 4, 1, 5, 9, 2, 6] My_list. sort() Print(my_list) # [1, 1, 2, 3, 4, 5, 6, 9] 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] Параметры Key И Reverse (Оба Метода): Оба метода (list. sort() и sorted()) принимают два необязательных параметра: Key: Функция, которая принимает один аргумент (элемент списка) и возвращает значение, используемое для сравнения элементов при сортировке. Это позволяет сортировать спис

В Python есть два основных способа сортировки списков:

List. sort(): Сортировка “на месте” (in-place)

Этот метод сортирует исходный список напрямую, то есть Изменяет его. Он не создает новый отсортированный список. Этот метод возвращает None.

My_list = [3, 1, 4, 1, 5, 9, 2, 6]

My_list. sort()

Print(my_list) # [1, 1, 2, 3, 4, 5, 6, 9]

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]

Параметры Key И Reverse (Оба Метода):

Оба метода (list. sort() и sorted()) принимают два необязательных параметра:

Key: Функция, которая принимает один аргумент (элемент списка) и возвращает значение, используемое для сравнения элементов при сортировке. Это позволяет сортировать списки по сложным критериям. Reverse: Логическое значение (True или False), указывающее, нужно ли сортировать список в обратном порядке (по убыванию). По умолчанию reverse равен False (сортировка по возрастанию).

Примеры использования Key:

Сортировка списка строк без учета регистра:

· words = ["apple", "Banana", "cherry"]

· words. sort(key=str. lower) # Сортировка с использованием str. lower в качестве функции сравнения

· print(words) # [‘apple’, ‘Banana’, ‘cherry’]

Сортировка списка кортежей по второму элементу:

· my_list = [(1, ‘b’), (2, ‘a’), (3, ‘c’)]

· my_list. sort(key=lambda item: item[1]) # Используем lambda-Функцию Для Доступа Ко Второму Элементу

· print(my_list) # [(2, ‘a’), (1, ‘b’), (3, ‘c’)]

Сортировка списка объектов по атрибуту:

· class Person:

· def __init__(self, name, age):

· self. name = name

· self. age = age

·

· def __repr__(self): # Для удобного отображения объекта

· return f"Person(name='{self. name}’, age={self. age})"

·

· people = [

· Person("Alice", 30),

· Person("Bob", 25),

· Person("Charlie", 35)

· ]

·

· people. sort(key=lambda person: person. age) # Сортировка По Возрасту

· print(people)

· # [Person(name=’Bob’, age=25), Person(name=’Alice’, age=30), Person(name=’Charlie’, age=35)]

Примеры использования Reverse:

Сортировка по убыванию:

· my_list = [3, 1, 4, 1, 5, 9, 2, 6]

· my_list. sort(reverse=True)

· print(my_list) # [9, 6, 5, 4, 3, 2, 1, 1]

·

· new_list = sorted(my_list, reverse=True)

· print(new_list) # [9, 6, 5, 4, 3, 2, 1, 1]

Выбор между List. sort() и Sorted():

Используйте List. sort(), если вам нужно отсортировать список На месте и вас не волнует, что исходный список будет изменен. Это немного более эффективно по памяти, так как не создается новый список. Используйте Sorted(), если вам нужно создать Новый отсортированный список, не изменяя исходный. Это полезно, когда вам нужно сохранить исходный порядок списка. sorted() также может быть использован с любыми итерируемыми объектами, а не только со списками.

Примеры сравнения:

My_list = [3, 1, 4, 1, 5, 9, 2, 6]

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

My_list. sort() # Теперь my_list Отсортирован

Print(my_list)

My_tuple = (3, 1, 4, 1, 5, 9, 2, 6)

# my_tuple. sort() # AttributeError: ‘tuple’ object has no attribute ‘sort’ — Кортежи Неизменяемы!

#Создаем отсортированный список из кортежа

Sorted_tuple = sorted(my_tuple)

Print(my_tuple)

Print(sorted_tuple)

Ключевые моменты:

list. sort() сортирует список на месте (изменяет исходный список) и возвращает None. sorted() создает новый отсортированный список и оставляет исходный список без изменений. Оба метода принимают параметры key и reverse для настройки сортировки. Используйте list. sort(), если вам нужно отсортировать список на месте и вам не важно, что исходный список будет изменен. Используйте sorted(), если вам нужно создать новый отсортированный список, не изменяя исходный список. Функция sorted() может применяться к любым итерируемым объектам, включая кортежи, строки и множества, в то время как метод list. sort() применим только к спискам.