对于采用列表和函数的函数,您会命名什么?如果将函数应用于所有元素,则返回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
这件事有一个很好的普遍接受的名字吗?如果你能以不那么笨重的方式实施,那就是奖金。
答案 0 :(得分:5)
在.NET中,最接近的是Array.TrueForAll
。
也许SameForAll
更适合这个功能?
答案 1 :(得分:4)
我还没有听说过这个特殊名称(有点类似于Forall
,但并不完全相同)。 IdenticalResults
似乎没问题(Jon Seigel提出SameForAll
,也很不错)
此外:这是使用all
函数(在.NET下TrueForall
)在Haskell中实现这一点的方式
ident [] = True
ident (x:xs) = all (== x) xs
sameForAll f = ident . map f
和Python:
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:] ))
答案 2 :(得分:1)
到目前为止还不能想到一个好名字,但是这个名字也是如此:
def identical_results(l, func):
return len(set(map(func, l))) <= 1
答案 3 :(得分:0)
相同的结果听起来像是一个合理的名字。
答案 4 :(得分:0)
我在上面的评论中发布了这个,但是格式化了,所以这里再次为了清晰起见:
def identical_results(l, func):
return reduce(lamdba x,y: x and y, map(func, l))