質問

あなたがリストと機能を取り、すべての要素に関数を適用すると、同じ結果が得られる場合に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は大丈夫と思われるので(ジョン・シーゲルはまた、非常に素敵なSameForAllを提案した)

さらに:それは1が(.NET下allTrueForall機能を使って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:] ))

は、これまでのところ良い名前を考えることができないが、これは同じことを行います:

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

identical_resultsは、私には合理的な名前のように聞こえるます。

私は上記のコメントでこの投稿が、書式設定はめちゃくちゃしまったので、ここでは明確にするため、再びです:

def identical_results(l, func):
    return reduce(lamdba x,y: x and y, map(func, l))
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top