문제

목록과 함수를 취하는 함수의 이름을 지정하고 모든 요소에 함수를 적용하면 동일한 결과를 제공하는 경우 True를 반환합니까?

def identical_results(l, func):
    if len(l) <= 1: return True
    result = func(l[0])
    for el in l[1:]:
        if func(el) != result:
            return False
    return True

이 일에 대해 일반적으로 받아 들여지는 이름이 있습니까? 덜 어리석은 방식으로 구현할 수 있다면 보너스.

도움이 되었습니까?

해결책

.NET에서 가장 가까운 것은입니다 Array.TrueForAll.

아마도 SameForAll 이 기능에 더 적합할까요?

다른 팁

아직 특별한 이름에 대해 들어 보지 못했습니다 (다소 비슷합니다. Forall, 그러나 정확히는 아닙니다). IdenticalResults 괜찮아 보인다 (Jon Seigel이 제안했다 SameForAll, 또한 아주 좋은)

또한 : 이것이 Haskell 에서이를 사용하여 이것을 구현할 수있는 방법입니다. all 기능 (TrueForall .NET 아래)

ident [] = True
ident (x:xs) = all (== x) xs

sameForAll f = ident . map f

그리고 파이썬 :

def idents(f, list):
    if len(list) <= 1:
        return True
    else:
        let fx0 = f(list[0])
        return all(( f(x) == fx0 for x in list[1:] ))

지금까지 좋은 이름을 생각할 수는 없지만이 이름은 동일합니다.

def identical_results(l, func):
    return len(set(map(func, l))) <= 1

동일한 _results는 나에게 합리적인 이름처럼 들립니다.

나는 이것을 위의 주석에 게시했지만 서식이 엉망이되었으므로 여기서는 다시 명확성을위한 것입니다.

def identical_results(l, func):
    return reduce(lamdba x,y: x and y, map(func, l))
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top