不勉強暴露(爆)
> 正式にはなんと呼ぶのか…
> A if C else B
> という式です。
> 2.5 から使えますよね。
あああ、リストやジェネレータの内包表現以外にも、
アレ、使えるのかぁ(あふぅ)
※マニュアルを引いたら、Conditional Expressions(条件付実行式?)と
言うらしいです
とゆーわけで、ジェネレータにも対応するために、
タプルで囲ってこんなん(rangeで作ったらエラーが出たので)
def reduce(fnc, lst):
return (fnc(reduce(fnc, tuple(lst)[:-1]), lst[-1])
if len(lst) > 2
else fnc(lst[0], lst[1])
)
まぁ、一行で書かないなら、こっちのほうがいいかも。
def reduce(fnc, lst):
lst = tuple(lst)
return (fnc(reduce(fnc, lst[:-1]), lst[-1])
if len(lst) > 2
else fnc(lst[0], lst[1])
)
ま、どっちにせよ、千回ほどまわしたらスタックオーバー
するので、Pythonで再帰はあんまり意味無いかも。
/機械伯爵/