例えばrandom_spelling_error
のような有用な変換関数があるとします。n回適用したいと思います。関数を独自の出力にn回再適用するPythonの方法?
私の一時的な解決策は、次のようになります。
def reapply(n, fn, arg):
for i in range(n):
arg = fn(arg)
return arg
reapply(3, random_spelling_error, "This is not a test!")
はこれを行うには、内蔵またはその他のより良い方法はありますか?
可変長argsまたはキーワードargsを処理する必要はありませんが、可能です。関数はスケールで呼び出されますが、nの値は小さくなり、引数と戻り値のサイズは小さくなります。
私たちは、このreduce
を呼び出すことができますが、その名前はもちろん、これを行うと、あまりにも多くのことができます機能のために採取した、ここではPython 3で削除されましたがGuido's argumentです:私の心の中でそう
、 reduce()の適用性は、 の連想演算子にかなり制限されており、他のすべてのケースでは、累積ループを明示的に書き出すほうがよいでしょう。
をRのためのソリューションを参照してください。 https://stackoverflow.com/questions/29237136/relooping-a-function-over-its-own-output –
私はあなたのループについて何か間違っているとか「un-pythonic」とは思わない。はい、おそらく3行ではなく1行で行えますが、何のために?それはすぐにそれが何をすべきか、それを非常にpythonic IMHOにすることが明らかです。 –
@tobias_k私はそれが読める(そして効率的な)ものであることに同意します。私はただの大会があるのか、何かを重複しているのだろうかと思っています。 –