2013-04-30 3 views
9

Я вижу, что он используется при сортировке, но что на самом деле означают отдельные компоненты этой строки кода?Что это значит: key = lambda x: x [1]?

key=lambda x: x[1] 

Что lambda, что x:, почему [1] в x[1] и т.д ...

Примеры

max(gs_clf.grid_scores_, key=lambda x: x[1]) 

sort(mylist, key=lambda x: x[1]) 
+0

Ehi! Это мой ответ на другой вопрос, заданный около 1 часа назад! : D – fog

ответ

13

lambda эффективно создает функцию инлайн. Например, вы можете переписать этот пример:

max(gs_clf.grid_scores_, key=lambda x: x[1]) 

Использование имени функции:

def element_1(x): 
    return x[1] 

max(gs_clf.grid_scores_, key=element_1) 

В этом случае max() возвращает элемент в этом массиве, чей второй элемент (x[1]) больше, чем все вторых элементов. Другой способ формулировки заключается в том, что вызов функции подразумевает: вернуть максимальный элемент, используя x[1] в качестве ключа .

10

lambda означает anonymous function. В этом случае эта функция принимает единственный аргумент x и возвращает x[1] (т. Е. Элемент по индексу 1 в x).

В настоящее время sort(mylist, key=lambda x: x[1]) сортирует mylist на основании значения key применительно к каждому элементу списка. Аналогично, max(gs_clf.grid_scores_, key=lambda x: x[1]) возвращает максимальное значение gs_clf.grid_scores_ относительно того, что возвращается key для каждого элемента.

Следует также отметить, что эта конкретная функция уже включена в одну из библиотек: operator. В частности, operator.itemgetter(1) эквивалентен вашему key.

0
distances.sort(key=lambda x: x[1]) 

Это функция. И здесь x - это список, в который мы добавляем x[1] i.e Второй элемент списка в функцию сортировки. Итак, в основном мы добавляем второй элемент списка (i.e x [1]) к функции сортировки. Надеюсь, вы это поняли.

Смежные вопросы