2017-05-17 1 views
-2

나는리스트를 받아들이는 람다 함수를 작성하려고하고리스트의 숫자 쌍의 합을 인덱스 세부 사항과 함께 리턴한다.람다를 사용하는리스트의 파이썬 합계

가 아니라면이 사용 람다를 작성할 수있는 경우

나는 그것이 루프 중첩 사용하여 작성하는 방법을 알고
def sumpair(L): 
result=[] 
for i in range(len(L)): 
    for j in range(i+1, len(L)): 
    result.append((i,j,L[i]+L[j])) 
return result 

이 알고 싶어 솔루션 중첩 루프, 내가 원하는

input: [4,5,1] 
output: [(0,1,9),(0,2,5),(1,2,6)] 
in the above example we do pairwise sum 

1. (4,5) --> 9 
2. (4,1) --> 5 
3. (5,1) --> 6 

람다를 사용하여 어떤 종류의 기능을 작성할 수 있는지 이해하고 있습니까?

+1

당신이 보여줄 수 같은 결과를 줄 것을 * 어떤 이 문제를 해결하기위한 노력? 예를 들어, 중첩 루프 솔루션? –

+0

@ScottHunter가 중첩 루프 솔루션을 추가했습니다 –

+0

'sumpair' 함수를 호출하는 람다를 작성할 수 있습니다 만, 그것이 당신이 찾고있는 것이 아닐 수도 있습니다. –

답변

1

람다와 for 루프는 상호 배타적이지 않습니다. 당신은 당신의 람다 내부 지능형리스트를 넣을 수 있고 그것은 하루 전화 :

compute = lambda L: [(i, j, L[i]+L[j]) for i,j in itertools.combinations(range(len(L)), 2)] 

이 (import itertools하는 것을 잊지 마세요). 새 변수를 만들고 싶어하지 않은 경우 그런 다음, 다른 한편으로

In [12]: compute([4,5,1]) 
Out[12]: [(0, 1, 9), (0, 2, 5), (1, 2, 6)] 

를 얻을 것 :

(lambda L: [(i, j, L[i]+L[j]) for i,j in itertools.combinations(range(len(L)), 2)])([4,5,1]) 

당신에게

+0

왜 downvote? – inspectorG4dget