pythonsortinggeneric-lambda

What [k] is in python sorting with lambda function?


I don't understand the lambda k function, and especially, what is the last [k] in this line of code?

sorting_permutation = sorted(range(len(prediction_test[0:m_test])), key=lambda k: prediction_test[0:m_test][k])

I am so sorry for my English.


Solution

  • We should analyse the whole function. You want to sort range(len(prediction_test[0:m_test])) . Assuming m_test isn't greater than len(prediction_test) , this should give a list containing numbers from 0 to m_test-1 .

    Key parameter of sorting function defines the function that the list is accordingly sorted. k values are the elements of the list that you want to sort. In your code, k will take values 0,1,2...,m_test-1 under the assumption. With prediction_test[0:m_test][k] you first take a slice of prediction_test from index 0 to index m_test, then you take the element at kth index.

    In a nutshell, key=lambda k: prediction_test[0:m_test][k] means that you will sort your list according to results of prediction_test[0:m_test][k] where k will take values of your elements in the list. Your code is probably used for sorting the indices of a list according to values that they store.