이 기능의 표준 이름이 있습니까?
-
20-09-2019 - |
문제
목록과 함수를 취하는 함수의 이름을 지정하고 모든 요소에 함수를 적용하면 동일한 결과를 제공하는 경우 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))
제휴하지 않습니다 StackOverflow