2017-09-11 3 views
0

파이썬을 사용하여 줄일 때 람다를 줄이는 동안 얼마나 많은 항목이 이미 줄어들 었는지 알 수 있습니까? 그렇다면이 코드를 어떻게 변환할까요?파이썬 필터 람다 - 줄이는 동안 얼마나 많은 항목이 줄어들 었는지

예는 :

numbers = [1,-1,2,-2,3,-3,4,-4,5,-5,6,-6] 
new_list = [] 
for number in numbers: 
    if number > 0 and len(new_list) < 3: 
     new_list.append(number) 
+0

. 'reduce'를 사용하여 당신이하려는 일의 예를 보여주십시오. "감소 된"요소의 수는 목록에있는 요소의 수 또는 계산하려는 방법에 따라 1을 뺀 것입니다. –

+0

그는'numbers '를'[1, 2]'로 줄이려고합니다 – nos

+1

왜 완전히 줄여야합니까? 'new_list = filter (numbers, lambda x : x> 0) [: 3]' – user3080953

답변

1

사실, 그것은 좋은 질문, '많은 사람들이 잘 파이썬에서 유용한 빌드 도구로 사용할 수 없습니다 원인입니다.

나는 왜 사람들이 당신의 질문을 슬퍼하는지 알지 못합니다. 여기

당신이 원하는 것을 할 itertools를 사용하여, 내 대답 : (우리는 3 년에 통과로)

import itertools 
top3 = itertools.islice(filter(lambda x: x > 0, numbers), 3) 
print(list(top3)) 

가 islice가 은 처음 3 개 요소를 소모합니다, 그래서 우리는하지 않습니다 목록이 너무 길거나 만족 한 번호가 하나라도 있어도 걱정할 필요가 없습니다. 코드 이 깨지지 않으며, 기능적 프로그래밍의 멋진 코드입니다.

결과 : 이해가 안

[1, 2, 3]