Python には関数 が組み込まれておりsum
、これは実質的に次のものと同等です。
def sum2(iterable, start=0):
return start + reduce(operator.add, iterable)
文字列を除くすべてのタイプのパラメーター。数値とリストで機能します。たとえば、次のようになります。
sum([1,2,3], 0) = sum2([1,2,3],0) = 6 #Note: 0 is the default value for start, but I include it for clarity
sum({888:1}, 0) = sum2({888:1},0) = 888
文字列が特別に省略されたのはなぜですか?
sum( ['foo','bar'], '') # TypeError: sum() can't sum strings [use ''.join(seq) instead]
sum2(['foo','bar'], '') = 'foobar'
その理由については、Pythonリストでの議論を覚えているようです。そのため、説明またはそれを説明するスレッドへのリンクは問題ありません。
編集:標準的な方法は行うことであることを認識しています"".join
。私の質問は、なぜ文字列に sum を使用するオプションが禁止され、たとえばリストには禁止がなかったのかということです。
編集2 :私が得たすべての良い答えを考えると、これは必要ないと思いますが、質問は: sum は、数値を含む iterable またはリストを含む iterable では機能するが、文字列を含む iterable では機能しないのはなぜですか?