2016-07-14 4 views
-5

람다에 대한 두 가지 모델을보고 대신 사용할 수 없습니다. 당신은 다음과 같이 가정합니다 :람다에 대한 두 가지 정의의 차이점은 무엇입니까?

lambda 다음에 x : x로 시작하고 마지막에는 list (y)로 시작한다는 것을 알 수 있습니다. 아래에 가정하십시오 :

languages = ["HTML", "JavaScript", "Python", "Ruby"] 
print max(languages,key=lambda x:x=="Python") 

예에서 발견했습니다. 이 경우 매개 변수는 람다와 같으며 목록의 이름은 처음에 있고 첫 번째 것과는 완전히 다릅니다. 두 가지 다른 정의가 있습니까? 감사합니다.

+1

'lambda x : x == "Python"'과'lambda student : student.score' - 람다 함수와 정확히 같은 문법. 'map'과'filter'가 다른 함수이기 때문에 게시 한 두 가지 경우가 다릅니다. – khelwood

+0

'x'와'student'는 각각의 경우에 매개 변수의 이름 일뿐입니다. 그들은 설명이 가능한 이름을 선택하기 때문에 다르다. 비록 그래프가 플롯되지 않는다면 'x'가 서술 적이라고는 생각하지 않지만. 둘 다 시도 했니? 어떤 변화가 있었습니까? 다른 사람의 코드를 복사하는 것은 좋은 습득 방법이 아닙니다. http://www.diveintopython.net/power_of_introspection/lambda_functions.html을 읽어보십시오. – cdarke

답변

0

docs.

필터 기능은 하고 반복 가능한 (목록) [즉 소요 filter(function, iterable)]

여기서 첫 번째 인수로 람다 (lambda x:x=="Python")를 전달합니다.

최대가 취하는 반복 가능하고 기능 '키'는 단일 인자 (이 경우) [즉 max(iterable[, key])]

두 번째 이름이 지정된 키 인수로 람다 (lambda student: student.score)를 전달합니다.

두 람다 모두 동일한 람다 구문입니다. 아마도 두 번째 키워드 인수 (key=...)를 사용하여 함수에 람다를 전달하기 때문에 혼란 스러울 것입니까?

0

답변. 이것들은 구 버전이므로 paython 3 이상에서는 사용할 수 없습니다. 그것은 다음과 같이 사용할 수 있습니다 :

squares=[x**2 for x in range(1,11)] 
c=max(filter(lambda x: x>=30 and x<=70,squares)) 
print (squares) 

print (c) 

또는

f=[1,2,3,4,5,6,7,8,9] 
print(list(filter(lambda x:x%2==0,f))) 
print(max(filter(lambda x:x%2==0,f))) 

지식이 오래되었습니다.

관련 문제