2014-01-15 5 views
-1

다음 파이썬 프로그램에서 v:(-v[1],v[0])에 대한 설명이 필요합니다. v은 무엇을 의미합니까? -v[1]v[0]은 무엇입니까? 단어 = "aaaaabbbbcccc"를 이 문장에 대한 설명 "list1.sort (key = lambda v : (-v [1], v [0]))"

def top_chars(word, n): 
    counts = Counter(word) 
    list1 = [] 
    list1 = counts.most_common() 
    list1.sort(key=lambda v: (-v[1], v[0])) 
return list1[0:n] 

는 주어진 단어

답변

0

lambda v: (-v[1], v[0]) 함수를 정의하기위한 기능 V를 설명해주십시오. 이 함수는 이름에 할당되고 함수로 사용될 수 있습니다. 따라서 :

>>> f = lambda v: (-v[1], v[0]) 
>>> f((1, 2)) 
(-2, 1) 

v 적어도 두 요소가 어떤 목록 또는 튜플 수있다. 함수는 두 번째 요소의 음수와 첫 번째 요소의 양수로 구성된 튜플을 반환합니다.

자세히 : word = "aaaaabbbbcccc"인 경우 top_chars 기능을 고려해 보겠습니다. 이 경우, list1 = counts.most_common()의 결과는 다음

[('a', 5), ('c', 4), ('b', 4)] 

참고리스트 1은 세 요소를 가지고, 각 요소는 하나 개 이상의 문자와 숫자로 이루어진 튜플이다. 다음 줄, 람다 함수가있는 줄은 위의 f에 주어진 키에 따라 이것을 정렬합니다. 이제 list1f는 튜플의 각 무엇을 살펴 보자 :

>>> f(('a', 5)) 
(-5, 'a') 
>>> f(('c', 4)) 
(-4, 'c') 
>>> f(('b', 4)) 
(-4, 'b') 

시작하려면 sort 수표,이 경우, 숫자 키의 첫 번째 요소. 그 숫자 중 가장 작은 숫자는 -5입니다. 따라서 sort은 ('a', 5)를 정렬 된 목록에서 첫 번째로 넣습니다. 그 다음으로 작은 값은 -4입니다. 그러나 두 개의 두 개가 -4로 정렬됩니다. 목록에서 다음에 넣을 두 가지를 선택하려면 sort 키의 두 번째 값으로 확인해야합니다. 이 경우 두 번째 값은 'b'와 'c'입니다. 'b'가 'c'보다 먼저 정렬되기 때문에 sort은 그 다음에 ('b', 4)를 그리고 그 다음에 ('c', 4)를 넣습니다. 최종 결과는 이유를 설명 :

>>> list1.sort(key=lambda v: (-v[1], v[0])) 
>>> list1 
[('a', 5), ('b', 4), ('c', 4)] 
+0

@yashwanth 업데이트 된 답변보기 – John1024

0

lambda v: (-v[1], v[0]) 기본적으로, 컴팩트, 익명 함수 lambda expression이다. 다음과 동등합니다 :

def func(v): 
    return (-v[1], v[0]) 

... 이름이 없지만 람다 함수에 이름을 지정할 수 있습니다. func = lambda v: (-v[1], v[0]).

이제 list 개체 sort() 방법 (이 경우 v라고한다)를 수용 한 인수 함수이어야 선택적 키워드 key= 인수를 받아 들인다. 목록은 key으로 전달 된 함수의 반환 값에 따라 정렬됩니다. 이것이 의미하는 것은 의 요소 (예 : 문자열, 목록, 튜플)로 구성된 list1v의 첫 번째 요소가 음수이고 두 번째 요소가 1 인 요소의 순열에 따라 정렬됩니다. 0 요소는 v입니다. 예를 들어 v = [1, 2, 3, 4] 인 경우 (-v[1], v[0]) = (-2, 1)입니다.

+0

위의 프로그램에서 문자열 단어 = "aaaaabbbbcccc"의 경우 동일한 설명을 해 주실 수 있습니까? – yashwanth