سؤال

وماذا كنت تسمية دالة التي تأخذ قائمة وظيفة، والعودة الحقيقية إذا تطبيق وظيفة لجميع عناصر يعطي نفس النتيجة؟

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 سيكون أكثر ملاءمة لهذه الوظيفة؟

نصائح أخرى

وHavn't سمعت عن اسم خاص لهذا بعد (تشبه إلى حد ما Forall، ولكن ليس تماما). IdenticalResults يبدو ذلك بخير (مقترح جون الشركات Seigel SameForAll، أيضا لطيف جدا)

وبالإضافة إلى ذلك: هذا هو حال يمكن للمرء أن تنفيذ هذا في هاسكل باستخدام وظيفة all (TrueForall تحت .NET)

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

sameForAll f = ident . map f

وبيثون:

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