Есть несколько точек, которые вам нужно понять.
sorted(list_name)
не изменяет (изменяет) исходный список. sorted
Функция сортирует элементысписок с их первым значением до и если вы не предоставите критерий в виде ключ .
для ex.В вашем случае элементы списка являются кортежами, и поэтому отсортированная функция будет сортировать эти элементы путем сравнения первого элемента каждого кортежа.
Если вы хотите изменить критерий сортировки, тогда вам нужнопредоставить ключ , а затем функция sorted
отсортирует элементы на основе критерия, который вы определили в своем ключе.
lambda
функция - это
функция «на лету» , то есть вы можете одновременно определять и вызывать функцию.
Так, В вашем случае написав sorted(student_tuples, key=lambda student: student[2])
. Вы просите python отсортировать список с именем student_tuples на основе критерия key = lambda student:студент [2] . Это означает, что он будет сравнивать 3-й элемент каждого кортежа списка student_tuples и будет соответственно сортировать его.
Теперь,позвольте мне ответить на ваш вопрос так:
Если значение, указанное в лямбде, не должно быть учащимся [x] [2]
Ответ НЕТ, потому что student - это просто параметр функции lambda
.Вы могли бы написать ключ = лямбда х: х [2] .Что просто означает, что вместо сравнения x для сортировки достаточно сравнить x [2] т.е. 3-й элемент каждого элемента .