2

如果将函数应用于所有元素给出相同的结果,你会如何命名一个接受列表和函数并返回 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

这个东西有一个很好的普遍接受的名字吗?如果您可以以不那么笨重的方式实施,则可以加分。

4

5 回答 5

5

在 .NET 中,最接近的是Array.TrueForAll.

也许SameForAll更适合这个功能?

于 2009-10-08T16:03:05.393 回答
4

还没有听说过这个的特殊名称(有点类似于Forall,但不完全是)。IdenticalResults看起来还可以(Jon Seigel 提议SameForAll,也不错)

all另外:这是在 Haskell 中使用函数(TrueForall在 .NET 下)实现这一点的方式

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:] ))
于 2009-10-08T16:07:43.950 回答
1

到目前为止想不出一个好名字,但这个名字是一样的:

def identical_results(l, func):
    return len(set(map(func, l))) <= 1
于 2009-10-08T16:06:04.047 回答
0

same_results 对我来说听起来是一个合理的名字。

于 2009-10-08T16:04:56.717 回答
0

我在上面的评论中发布了这个,但是格式搞砸了,所以为了清楚起见,再次在这里:

def identical_results(l, func):
    return reduce(lamdba x,y: x and y, map(func, l))
于 2009-10-08T17:35:41.183 回答