列出
{a, b, c, d}
和一个功能
f
我希望得到一份清单
{f[a], f[a,b], f[a,b,c], f[a,b,c,d]}
最简单的方法是什么?
答案 0 :(得分:4)
f @@@ ({a, b, c, d}[[1 ;; #]] & /@ Range[4])
{f [a],f [a,b],f [a,b,c],f [a,b,c,d]}
答案 1 :(得分:3)
这不是很简单,但可以正常使用
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]} *)
答案 2 :(得分:2)
其他一些配方:
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
]
一
AB
ABC
ABCD