Как лямбда-функция используется с функцией `sorted()` для сортировки?

Лямбда-функция с sorted() используется для предоставления кастомной функции сортировки, которая извлекает ключ для сравнения из каждого элемента последовательности. Аргумент key функции sorted() принимает лямбда-функцию, которая определяет это правило. Например, для сортировки списка кортежей по второму элементу, можно использовать sorted(list_of_tuples, key=lambda x: x[1]).

Лямбда-функция в Python используется с функцией sorted() для определения кастомной логики сортировки. Функция sorted() принимает аргумент key, который ожидает функцию. Эта функция будет применена к каждому элементу списка (или итерируемого объекта), и результат этого применения будет использован в качестве ключа для сравнения при сортировке.

Лямбда-функция, будучи анонимной и краткой, идеально подходит для предоставления этой логики "на месте", без необходимости определять отдельную, именованную функцию. Она позволяет выразить простую логику сортировки непосредственно в вызове sorted().

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


    data = [(1, 'b'), (3, 'a'), (2, 'c')]
    sorted_data = sorted(data, key=lambda item: item[1])
    print(sorted_data)  # Output: [(3, 'a'), (1, 'b'), (2, 'c')]
  

В этом примере лямбда-функция lambda item: item[1] берет кортеж item и возвращает его второй элемент (индекс 1). sorted() использует эти вторые элементы для сравнения кортежей, сортируя их по алфавиту во втором столбце.

Другой пример: Сортировка списка строк по длине:


    strings = ["apple", "banana", "kiwi", "orange"]
    sorted_strings = sorted(strings, key=lambda s: len(s))
    print(sorted_strings)  # Output: ['kiwi', 'apple', 'banana', 'orange']
  

Здесь лямбда-функция lambda s: len(s) возвращает длину строки s. sorted() использует эти длины для сравнения строк, сортируя их по возрастанию длины.

Преимущества использования лямбда-функций с sorted():

  • Краткость и лаконичность: Позволяет выразить простую логику сортировки в одной строке.
  • Удобство: Избавляет от необходимости создавать отдельные именованные функции для простых задач сортировки.
  • Читаемость (в случае простых выражений): В простых случаях делает код более понятным и читаемым, так как логика сортировки видна сразу в вызове sorted().

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

0