のリストを持っている
{a, b, c, d}
と関数
f
リストを取得したい
{f[a], f[a,b], f[a,b,c], f[a,b,c,d]}
これを行う最も簡単な方法は何ですか?
のリストを持っている
{a, b, c, d}
と関数
f
リストを取得したい
{f[a], f[a,b], f[a,b,c], f[a,b,c,d]}
これを行う最も簡単な方法は何ですか?
f @@@ ({a, b, c, d}[[1 ;; #]] & /@ Range[4])
{f [a]、f [a、b]、f [a、b、c]、f [a、b、c、d]}
これは正確には単純ではありませんが、機能します
lst = {a, b, c, d};
Block[{f}, SetAttributes[f, Flat]; FoldList[f, f@First@#, Rest@#]]& @ lst
(* {f[a], f[a, b], f[a, b, c], f[a, b, c, d]} *)
これも、非常によく似た質問に対する私の回答に基づいています。
f @@@ FoldList[#1~Join~{#2} &, {First@#}, Rest@#]& @ lst
(* {f[a], f[a, b], f[a, b, c], f[a, b, c, d]} *)
いくつかの他の定式化:
f @@ Take[{a, b, c, d}, #] & ~Array~ 4
f[a, b, c, d] ~Take~ # & ~Array~ 4
Rest @ FoldList[Append, f[], {a, b, c, d}]
f
最初のものを除くすべてが望ましくない方法で評価される可能性がありますがBlock
、それを防ぐために使用できます。
f = Print;
Block[{f},
f[a, b, c, d] ~Take~ # & ~Array~ 4
]
a
ab
abc
あいうえお