もちろん、リストの要素を合計したい場合は、単にsum(list_)
を呼び出す必要があります。
質問:map
で、Pythonの組み込みとパターンの両方は、データシーケンスに関数を適用することを指し、最初のシーケンスの各要素について別々の結果を持つ別のシーケンスを生成します。
sum
このようにしないと、シーケンス全体で単一の結果が得られます。このパターンはreduce
と呼ばれており、これを行うためのPythonも組み込まれています。 Python 3では、それはfunctools
モジュールに「降格」されました。これは、マップパターンよりもセルドンが使用されたためです。
sum
ビルトイン自身が一人で、「減らす」パターンを採用 - あなたは明示的にそれが行くパターンを減らす使用してsum
を再作成した場合は同様:
from functools import reduce
a = [1, 2, 3, 4]
reduce(lambda result, value: result + value, a, 0)
は、最初のパラメータはかかる呼び出し可能です「今までの累積結果」、2番目の値はreduce atで実行したい項目のシーケンス、3番目のパラメータは累積結果として渡す初期値です。 (したがって、ゼロから始まります)。被乗数の場合、次のように使用できます。
reduce(lambda result, value: result * value, a, 1)
'sum(a)'の何が問題なのですか? 'map'は、リストに要素的に関数を適用したいときに使われます。 'sum'は繰り返し可能です。単一の数字に 'sum'を適用すると(マップのように)無意味です。 –
@cᴏʟᴅsᴘᴇᴇᴅ、何も、単に可能性を持って遊んでいます。 – Adorn
また、リンクされた回答は 'map' +' sum'が適用されるリストのリストを扱います。一方、あなたは数字のリストを持っています。 –