Ответ 1
Семантически это:
print sorted(student_tuples, key=lambda student: student[2])
совпадает с этим:
def sort_key(student):
return student[2]
print sorted(student_tuples, key=sort_key)
lambda
просто предоставляет альтернативный синтаксис для определения функции. Результатом является объект функции, как и тот, который создан def
. Однако есть некоторые вещи, которые функции lambda
не могут выполнять - как определение новых переменных. Они хороши (в зависимости от того, кого вы просите) для создания небольших одноразовых функций, таких как этот.
Как только вы это понимаете, все, что вам нужно знать, - это то, что key
принимает функцию, вызывает ее на каждое значение в последовательности, переданной в sorted
, и сортирует значения в соответствии с порядком их соответствующих key
, если они были отсортированы сами.