sum_of_squares = lambda L: sum([x**2 for x in L])
#reduce(sum_of_squares,[1])
assert sum_of_squares([2,3,4]) == 29
assert sum_of_squares([]) == 0
assert sum_of_squares([1]) == 1
我已經評論過的是我嘗試使用reduce,是不是正確的格式?減少(函數,序列)。不知道我在這裏做錯了什麼麻煩使用減少到這個功能
減少花費的*兩個參數*,而不是已經降低了整個輸入列表功能的功能。使用像'sum_of_squares'這樣的函數,它接收整個輸入列表並自行減少它,您不需要'reduce'。 – user2357112
請注意,reducer函數應該有兩個參數:到目前爲止的結果和下一個值。它不包括整個列表。要用'reduce'做正方形的總和,你需要'lambda x,y:x + y ** 2'。 – jonrsharpe
@jonrsharpe:除了那不是第一個數字。雖然你可以用「開始」參數來修補問題,但使用「map」進行平方轉換和「減少」總和會更清晰。 – user2357112