Share This
Связаться со мной
Крути в низ
Categories
//Использование лямбда-функции для сортировки списков в Python

Использование лямбда-функции для сортировки списков в Python

18.07.2021Category : Python

Перевод статьи «How to sort with lambda in Python».

Операции сортировки применяются к спискам данных на любом языке программирования. В Python для хранения наборов данных используются кортеж, список и словарь. Доступ к значениям кортежа и списка осуществляется по индексу, а к значениям словаря — по ключам.

В Python есть множество встроенных функций для сортировки списка данных в порядке возрастания или убывания. Лямбда-функция – одна из них. С ее помощью мы можем определить порядок сортировки в зависимости от требований.

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

Пример 1. Сортировка списка чисел в формате строковых данных

Напишем код для сортировки списка строковых данных, которые являются числами, с применением лямбда-функции.

Зададим список из 6 элементов. Лямбду будем использовать внутри функции sorted() для сортировки списка.

В качестве первого аргумента функции указывается переменная списка, лямбда устанавливается ​​в качестве значения ключа, а третьим аргументом передается начальная позиция сортировки. При помощи print() выводим в консоль отсортированный список через пробел.

n_list = ['11', '50', '5', '1', '37', '19'] # Sort the list using lambda and sorted function sorted_list = sorted(n_list, key=lambda x: int(x[0:])) # Print the sorted list print("The list of the sorted values are:") for value in sorted_list:     print(value, end=' ')

Запустив наш код, получим следующий результат.

The list of the sorted values are: 1 5 11 19 37 50 

Пример 2. Сортировка списка кортежей

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

Здесь мы используем три типа сортировки.

В первой сортирующей функции позиция сортировки устанавливается в 0. Таким образом мы отсортируем список по первым элементам кортежей.

Во второй сортирующей функции позиция сортировки – 1. Так мы отсортируем список по вторым элементам кортежей.

Чтобы отсортировать список по третьим элементам кортежей, установим позицию сортировки 2.

tuple_list = [("HTML", 15, 'M01'), ("JavaScript", 10, 'M03'), ("Bootstrap", 5, 'M02')] # Sort the list based on the first item of the tuple sorted_list1 = sorted(tuple_list, key=lambda x: x[0]) # Print the first sorted list print("The sorted list based on the first item:n", sorted_list1) # Sort the list based on the second item of the tuple sorted_list2 = sorted(tuple_list, key=lambda x: x[1]) # Print the second sorted list print("The sorted list based on the second item:n", sorted_list2) # Sort the list based on the third item of the tuple sorted_list3 = sorted(tuple_list, key=lambda x: x[2]) # Print the third sorted list print("The sorted list based on the third item:n", sorted_list3)

Запустим наш код и получим три списка кортежей, отсортированных по указанным позициям.

The sorted list based on the first item:  [('Bootstrap', 5, 'M02'), ('HTML', 15, 'M01'), ('JavaScript', 10, 'M03')] The sorted list based on the second item:  [('Bootstrap', 5, 'M02'), ('JavaScript', 10, 'M03'), ('HTML', 15, 'M01')] The sorted list based on the third item:  [('HTML', 15, 'M01'), ('Bootstrap', 5, 'M02'), ('JavaScript', 10, 'M03')]

Пример 3. Сортировка списка, состоящего из других списков

Теперь давайте напишем код для сортировки вложенного списка с использованием нашей лямбда-функции.

Объявим пустой список для хранения значений отсортированного списка. Для сортировки элементов вложенного списка воспользуемся вложенными циклами for . Внешний цикл for будет повторяться в зависимости от количества внутренних списков, определенных в основном списке.

В нашем случае у нас есть три внутренних списка. Первый из них имеет три элемента, второй – два, а третий состоит из четырех элементов. Количество итераций внутреннего цикла for будет зависеть от количества элементов в каждом внутреннем списке.

Функция sorted() вызывает лямбда-выражение внутри внутреннего цикла для сортировки вложенного списка.

nested_list = [['Mango', 'Banana', 'Orange'], ['Rose', 'Lily'], ['Lion', 'Monkey', 'Tiger', 'Deer']] # Declare an empty list sorted_data = []  # Loop to iterate the outer list for i in range(len(nested_list)):     # Loop to iterate the inner list     for j in range(len(nested_list[i])):         # Sort the inner list         sorted_list = sorted(nested_list[i], key=lambda x: x[0])     # Append the sorted list     sorted_data.append(sorted_list)  # Print the sorted nested list print("The list after sorting:n {}".format(sorted_data))

В выводе мы получим список из трех отсортированных списков.

The list after sorting:  [['Banana', 'Mango', 'Orange'], ['Lily', 'Rose'], ['Deer', 'Lion', 'Monkey', 'Tiger']]

Пример 4. Сортировка списка словарей

Напишем код для сортировки списка, состоящего из словарей, с использованием лямбда-функции.

Каждый словарь внутри списка содержит три пары ключ-значение.

Рассмотрим четыре типа сортировки. Первый использует сортировку на основе ключа code. Второй – на основе ключа name. Третий способ демонстрирует сортировку на основе обоих этих ключей. В четвертом случае мы видим сортировку в порядке убывания на основе ключа name.

dic_list = [{"code": "CSE-401", "name": "Multimedia", "Credit": 2.0},             {"code": "CSE-101", "name": "Computer Fundamental", "Credit": 1.5},             {"code": "CSE-305", "name": "Unix Programming", "Credit": 3.0}]  # Print the sorted dictionary based on code print("Sorting based on the code:n", sorted(dic_list, key=lambda i: i['code'])) # Print the sorted dictionary based on name print("Sorting based on the name:n", sorted(dic_list, key=lambda i: (i['name']))) # Print the sorted dictionary based on code and name print("Sorting based on the code and name:n", sorted(dic_list, key=lambda i: (i['code'], i['name']))) # Print the sorted dictionary in descending based on name print("Sorting in descending order based on the name:n", sorted(dic_list, key=lambda i: i['name'], reverse=True))

Запустим нашу программу и получим следующий результат.

Sorting based on the code:  [{'code': 'CSE-101', 'name': 'Computer Fundamental', 'Credit': 1.5}, {'code': 'CSE-305', 'name': 'Unix Programming', 'Credit': 3.0}, {'code': 'CSE-401', 'name': 'Multimedia', 'Credit': 2.0}] Sorting based on the name:  [{'code': 'CSE-101', 'name': 'Computer Fundamental', 'Credit': 1.5}, {'code': 'CSE-401', 'name': 'Multimedia', 'Credit': 2.0}, {'code': 'CSE-305', 'name': 'Unix Programming', 'Credit': 3.0}] Sorting based on the code and name:  [{'code': 'CSE-101', 'name': 'Computer Fundamental', 'Credit': 1.5}, {'code': 'CSE-305', 'name': 'Unix Programming', 'Credit': 3.0}, {'code': 'CSE-401', 'name': 'Multimedia', 'Credit': 2.0}] Sorting in descending order based on the name:  [{'code': 'CSE-305', 'name': 'Unix Programming', 'Credit': 3.0}, {'code': 'CSE-401', 'name': 'Multimedia', 'Credit': 2.0}, {'code': 'CSE-101', 'name': 'Computer Fundamental', 'Credit': 1.5}]

Заключение

Мы рассмотрели использование лямбда-функции для сортировки различных списков в Python. Разобрали на простых примерах, как можно отсортировать четыре разных списка. Надеемся, это поможет вам понять цель использования лямбда-функции при сортировке.

ispolzovanie ljambda funkcii dlja sortirovki spiskov v python d56834d - Использование лямбда-функции для сортировки списков в Python

Кодинг-марафон по Python

Реши 10 задач и выиграй 5500 рублей

Подписаться ×

  • 2 views
  • 0 Comment

Leave a Reply

Ваш адрес email не будет опубликован.

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

Свежие комментарии

    Рубрики

    About Author 01.

    blank
    Roman Spiridonov

    Моя специальность - Back-end Developer, Software Engineer Python. Мне 39 лет, я работаю в области информационных технологий более 5 лет. Опыт программирования на Python более 3 лет. На Django более 2 лет.

    Categories 05.

    © Speccy 2022 / All rights reserved

    Связаться со мной
    Close