Python プログラミングは初めてです。組み込み関数 ( Monkeypatch )の機能を強化する方法を知りたいです。
例えば
私はsum()組み込み関数が数値項目でのみ許可されている ことを知っています
>>> sum([4,5,6,7]) #22
以下に示すように、アイテムのリストを文字列として許可する合計関数を作成したいと思います
例えば
>>> sum(['s','t','a','c','k']) # 'stack'
前もって感謝します
Python プログラミングは初めてです。組み込み関数 ( Monkeypatch )の機能を強化する方法を知りたいです。
例えば
私はsum()組み込み関数が数値項目でのみ許可されている ことを知っています
>>> sum([4,5,6,7]) #22
以下に示すように、アイテムのリストを文字列として許可する合計関数を作成したいと思います
例えば
>>> sum(['s','t','a','c','k']) # 'stack'
前もって感謝します
sum
関数を定義するものなら何でも動作し__add__
ます。2 番目のパラメーターは開始点で、デフォルトは 0 ですが、合計するものの「何もない」バージョンに置き換えることができます。たとえば、空のリストから始めて、リストのリストを一緒に追加します。
sum([[1, 2, 3], [4, 5, 6]], [])
戻り値:
[1, 2, 3, 4, 5, 6]
したがって、通常、これは実際に機能します。
sum(['s','t','a','c','k'], '')
ただし、これにより、文字列に使用するように具体的に指示する例外が発生join
します。性能が良いからでしょう。
許可よりも許しを求める方が簡単:
import __builtin__
def sum(seq, start = 0):
try:
return "".join(seq)
except TypeError:
return __builtin__.sum(seq, start)
...
>>> sum([4,5,6,7])
22
>>> sum(['s','t','a','c','k'])
'stack'
他の人の回答のほとんどをコピーしたように見える場合は、ご容赦ください。:)
しかし、真剣に、''.join()
@ nmcleanが過小評価された回答で説明したように、代わりに使用する必要があります。