カスタム高階関数

sortmaxminのような関数は、key=のような関数を引数として受け取り、その挙動を決定することができます。これにより、組み込み関数のsortmaxは非常に強力で汎用的になります。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)

Challenge

コレクション(リスト、セット、タプルのリストなど)を第一引数に取り、各要素から数値を取得する関数を第二引数に取る、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