2013-04-30 5 views
9

정렬에 사용되는 것을 볼 수 있지만이 코드 줄의 개별 구성 요소는 실제로 무엇을 의미합니까?이것은 무엇을 의미합니까? key = lambda x : x [1]?

key=lambda x: x[1] 

무엇 lambda, x[1] 등의 [1] ...

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

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

Ehi! 그것은 1 시간 전 다른 질문에 대한 나의 대답입니다. :디 – fog

답변

13

lambda 효과적으로 인라인 함수를 생성하는 이유 x:, 무엇. 명명 된 기능 사용

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]으로 사용하여 max 요소를 반환하십시오.

10

lambdaanonymous function을 의미합니다. 이 경우이 함수는 단일 인수 x을 사용하고 x[1]을 반환합니다 (즉, 인덱스 1의 항목은 x).

이제 sort(mylist, key=lambda x: x[1])key의 값을 기준으로 mylist을 정렬합니다 (목록의 각 요소에 적용). 마찬가지로 max(gs_clf.grid_scores_, key=lambda x: x[1])은 각 요소에 대해 key이 반환하는 값의 최대 값을 gs_clf.grid_scores_으로 반환합니다.

또한이 특정 기능이 이미 라이브러리 중 하나에 포함되어 있음을 지적해야합니다 : operator. 특히 operator.itemgetter(1)key과 같습니다.

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

이것은 기능입니다. 그리고 여기 x는리스트의 두 번째 요소 인 x[1]을 정렬 함수에 추가하는 목록입니다. 따라서 기본적으로 모든 목록의 두 번째 요소 (예 : x [1])를 정렬 함수에 추가합니다. 이 사실을 이해하시기 바랍니다.

관련 문제