कस्टम उच्च-क्रम फ़ंक्शन

sort, max या min जैसे फ़ंक्शन key= जैसे आर्गुमेंट्स ले सकते हैं जो स्वयं फ़ंक्शन होते हैं और उनके व्यवहार को निर्धारित करते हैं। इससे बिल्ट-इन फ़ंक्शन्स sort और max और भी अधिक शक्तिशाली और सामान्य बन जाते हैं। वे अधिक परिदृश्यों में उपयोग किए जा सकते हैं, बजाय इसके कि वे केवल मूल्यों की सीधी तुलना करें बिना key= आर्गुमेंट के।
हम अपने खुद के उच्च-क्रम फ़ंक्शन्स भी बना सकते हैं:
def modify(numbers, f):
    res = [f(n) for n in numbers]
    return res

print(modify([1, 2, 3], lambda x: x**2))   # [1, 4, 9]
print(modify([1, 2, 3], lambda x: -x))     # [-1, -2, -3]
print(modify([2, 0, 1], lambda x: 2 * x))  # [4, 0, 2]
print(modify([2, 0, 1], str))              # ['2', '0', '1']
यहां हम अलग-अलग फ़ंक्शन्स को f के रूप में उच्च-क्रम फ़ंक्शन modify को पास कर रहे हैं। modify फ़ंक्शन इनपुट सूची से एक नई सूची बनाता है और परिणाम लौटाता है। ध्यान दें कि हम str जैसे फ़ंक्शन को भी पास कर सकते हैं। तो, इनपुट सूची के प्रत्येक तत्व पर str() फ़ंक्शन लागू होगा - str(2), str(0), str(1)

चुनौती

sum फ़ंक्शन का एक सामान्य संस्करण generic_sum नाम से बनाएँ जो पहले आर्गुमेंट के रूप में एक कलेक्शन लेगा (यह एक सूची, सेट, या ट्यूपल की सूची हो सकती है) और दूसरे आर्गुमेंट के रूप में एक फ़ंक्शन लेगा जो कलेक्शन के प्रत्येक तत्व से एक संख्या प्राप्त करेगा।
def generic_sum():
    ...

print(generic_sum([1, 2, 3], lambda x: x))                   # 6
print(generic_sum({1, 2, 3}, lambda x: x))                   # 6
print(generic_sum([(1, 3), (4, 6)], lambda x: x[0] + x[1]))  # 14
 

Constraints

Time limit: 2 seconds

Memory limit: 512 MB

Output limit: 1 MB

To check your solution you need to sign in
Sign in to continue