这个函数有标准的名字吗?

发布于 2024-08-06 22:50:16 字数 318 浏览 6 评论 0原文

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

这个东西有一个好听的普遍接受的名字吗?如果您能以不那么笨拙的方式实施,那就太好了。

What would you name a function that takes a list and a function, and returns True if applying the function to all elements gives the same result?

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

Is there a nice generally accepted name for this thing? Bonus if you can implement in a less clunky fashion.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

梨涡少年 2024-08-13 22:50:16

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

也许 SameForAll 更适合这个功能?

In .NET, the closest is Array.TrueForAll.

Maybe SameForAll would be more appropriate for this function?

幻梦 2024-08-13 22:50:16

还没有听说过这个的特殊名称(有点类似于 Forall,但不完全一样)。 IdenticalResults 看起来还不错(Jon Seigel 提出了 SameForAll,也相当不错)

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

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:] ))

Havn't heard about a special name for this yet (somewhat similar to Forall, but not exactly). IdenticalResults seems okay so (Jon Seigel proposed SameForAll, also quite nice)

Additionally: That's the way one could implement this in Haskell using the all function (TrueForall under .NET)

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

sameForAll f = ident . map f

And 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:] ))
無心 2024-08-13 22:50:16

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

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

Can't think of a good name so far, but this one does the same:

def identical_results(l, func):
    return len(set(map(func, l))) <= 1
千紇 2024-08-13 22:50:16

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

identical_results sounds like a reasonable name to me.

岁月无声 2024-08-13 22:50:16

我在上面的评论中发布了此内容,但格式混乱,所以为了清楚起见,这里再次说明:

def identical_results(l, func):
    return reduce(lamdba x,y: x and y, map(func, l))

I posted this in a comment above, but the formatting got messed up, so here it is again for clarity:

def identical_results(l, func):
    return reduce(lamdba x,y: x and y, map(func, l))
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文