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さらに:これは、関数(TrueForall.NETの下)を使用して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:] ))
于 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

同一の結果は私には合理的な名前のように聞こえます。

于 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 に答える