Sort list method python

Метод List sort() в Python

Метод List sort() в Python сортирует элементы списка в порядке возрастания.

В Python есть встроенная функция sorted(), которая используется для создания отсортированного списка из итерируемого объекта.

1. Использование метода List sort() по умолчанию

По умолчанию метод list sort() в Python упорядочивает элементы списка в порядке возрастания. Это также естественный способ сортировки элементов.

numbers_list = [3.4, 5.1, 2.2, 4.1, 1.0, 3.8] print(f'Before sorting: ') numbers_list.sort() print(f'After sorting: ')
Before sorting: [3.4, 5.1, 2.2, 4.1, 1.0, 3.8] After sorting: [1.0, 2.2, 3.4, 3.8, 4.1, 5.1]

Элементы также могут быть символами или числами, и метод sort() продолжит сортировку в порядке возрастания.

str_list = ['a', 'c', 'd', 'b', 'B', 'C', '1'] str_list.sort() print(str_list) # ['1', 'B', 'C', 'a', 'b', 'c', 'd']

2. Обратная сортировка списка

Если вы хотите, чтобы сортировка выполнялась в обратном порядке, передайте обратный аргумент, как True. Мы можем использовать это для сортировки списка чисел в порядке убывания.

numbers_list = [3.4, 5.1, 2.2, 4.1, 1.0, 3.8] print(f'Before sorting: ') numbers_list.sort(reverse=True) print(f'After sorting: ')
Before sorting: [3.4, 5.1, 2.2, 4.1, 1.0, 3.8] After sorting: [5.1, 4.1, 3.8, 3.4, 2.2, 1.0]

3. Сортировка вложенного списка

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

numbers = [[1, 2], [2, 1], [4, 3], [5, 2], [3, 3]] print(f'Before sorting: ') numbers.sort() print(f'After sorting: ')
Before sorting: [[1, 2], [2, 1], [4, 3], [5, 2], [3, 3]] After sorting: [[1, 2], [2, 1], [3, 3], [4, 3], [5, 2]]

Понятно, что сортировка производится по первому элементу вложенного списка. Но иногда нам нужно отсортировать вложенный список по позициям разных элементов.

Читайте также:  Php program connect mysql

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

def custom_key(people): return people[1] # second parameter denotes the age persons = [['Alice', 26, 'F'], ['Trudy', 25, 'M'], ['Bob', 25, 'M'], ['Alexa', 22, 'F']] print(f'Before sorting: ') persons.sort(key=custom_key) print(f'After sorting: ')
Before sorting: [['Alice', 26, 'F'], ['Trudy', 25, 'M'], ['Bob', 25, 'M'], ['Alexa', 22, 'F']] After sorting: [['Alexa', 22, 'F'], ['Trudy', 25, 'M'], ['Bob', 25, 'M'], ['Alice', 26, 'F']]

Мы используем ключевой аргумент, чтобы указать элемент, который будет использоваться для целей сортировки. Функция custom_key возвращает ключ для сортировки списка.

4. Пользовательская логика для сортировки списка

Мы также можем реализовать вашу собственную логику для сортировки элементов списка.

В последнем примере мы использовали возраст как ключевой элемент для сортировки нашего списка.

Но есть такая поговорка: «Сначала дамы!». Итак, мы хотим отсортировать наш список таким образом, чтобы женский пол имел приоритет над мужским. Если пол двух человек совпадает, младший получает более высокий приоритет.

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

Итак, нам нужно импортировать библиотеку под названием functools. Мы будем использовать функцию cmp_to_key(), чтобы преобразовать compare_function в key.

import functools def compare_function(person_a, person_b): if person_a[2] == person_b[2]: # if their gender become same return person_a[1] - person_b[1] # return True if person_a is younger else: # if their gender not matched if person_b[2] == 'F': # give person_b first priority if she is female return 1 else: # otherwise give person_a first priority return -1 persons = [['Alice', 26, 'F'], ['Trudy', 25, 'M'], ['Bob', 24, 'M'], ['Alexa', 22, 'F']] print(f'Before sorting: ') persons.sort(key=functools.cmp_to_key(compare_function)) print(f'After sorting: ')
Before sorting: [['Alice', 26, 'F'], ['Trudy', 25, 'M'], ['Bob', 24, 'M'], ['Alexa', 22, 'F']] After sorting: [['Alexa', 22, 'F'], ['Alice', 26, 'F'], ['Bob', 24, 'M'], ['Trudy', 25, 'M']]

Список сначала сортируется по полу. Затем он сортируется по возрасту людей.

Читайте также:  Итоговая работа степик питон

5. Сортировка списка объектов

Сортировка по умолчанию работает с числами и строками. Но это не будет работать со списком настраиваемых объектов. Посмотрим, что произойдет, когда мы попытаемся запустить сортировку по умолчанию для списка объектов.

class Employee: def __init__(self, n, a, gen): self.name = n self.age = a self.gender = gen def __str__(self): return f'Emp[::]' # List uses __repr__, so overriding it to print useful information __repr__ = __str__ e1 = Employee('Alice', 26, 'F') e2 = Employee('Trudy', 25, 'M') e3 = Employee('Bob', 24, 'M') e4 = Employee('Alexa', 22, 'F') emp_list = [e1, e2, e3, e4] print(f'Before Sorting: ') try: emp_list.sort() except TypeError as te: print(te)
Before Sorting: [Emp[Alice:26:F], Emp[Trudy:25:M], Emp[Bob:24:M], Emp[Alexa:22:F]] '

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

# sorting based on age def sort_by_age(emp): return emp.age emp_list.sort(key=sort_by_age) print(f'After Sorting By Age: ')
After Sorting By Age: [Emp[Alexa:22:F], Emp[Bob:24:M], Emp[Trudy:25:M], Emp[Alice:26:F]]

Мы также можем использовать модуль functools для создания пользовательской логики сортировки для элементов списка.

Источник

Python List sort() Method

The sort() method sorts the list ascending by default.

You can also make a function to decide the sorting criteria(s).

Syntax

Parameter Values

Parameter Description
reverse Optional. reverse=True will sort the list descending. Default is reverse=False
key Optional. A function to specify the sorting criteria(s)

More Examples

Example

Example

Sort the list by the length of the values:

# A function that returns the length of the value:
def myFunc(e):
return len(e)

cars = ['Ford', 'Mitsubishi', 'BMW', 'VW']

Example

Sort a list of dictionaries based on the "year" value of the dictionaries:

# A function that returns the 'year' value:
def myFunc(e):
return e['year']

Example

Sort the list by the length of the values and reversed:

# A function that returns the length of the value:
def myFunc(e):
return len(e)

cars = ['Ford', 'Mitsubishi', 'BMW', 'VW']

Unlock Full Access 50% off

COLOR PICKER

colorpicker

Join our Bootcamp!

Report Error

If you want to report an error, or if you want to make a suggestion, do not hesitate to send us an e-mail:

Thank You For Helping Us!

Your message has been sent to W3Schools.

Top Tutorials
Top References
Top Examples
Get Certified

W3Schools is optimized for learning and training. Examples might be simplified to improve reading and learning. Tutorials, references, and examples are constantly reviewed to avoid errors, but we cannot warrant full correctness of all content. While using W3Schools, you agree to have read and accepted our terms of use, cookie and privacy policy.

Источник

Оцените статью