level 6
Table[(#^n) &, {n, 1, 3}]
(*我想遍历n得到 {#^1,
#^2,#
^3} 的纯函数列表,但是这句话里的n却没被赋值。输出为:{
#1^n&,#
1^n&,#1^n&}*)
(*我要怎么做才能从1到3遍历指数n得到 {#^1,
#^2,#
^3}?*)
然后我想到了以前在吧里咨询时学到的Evaluate
Table[Evaluate[#^n] &, {n, 1, 3}]
(*这样就能得到 {#1 &,
#1^2 &, #
1^3 &} 了*)
发出来记录下。
2024年01月03日 07点01分
1
吧务
level 12
另一种可行的写法,可以用于无法整体Evaluate的场景
Table[With[{n = n}, #^n &], {n, 1, 3}]
2024年01月04日 11点01分
3
我给
# 加了 #
[[n]],发觉 Table[Evaluate[#[[n]]^n] &, {n, 1, 3}] 的第一项是 1 & 而不是 #1[[1]]^1 &,而你的With写法就没这问题。在12.3.1.0版本。这个是可以解释的吗?
2024年02月12日 12点02分
@泥萌都👀 With进行替换,而后因在Function中而不被求值,故指数一不被消去。而Evaluate指明忽视Function的HoldAll进行求值,根据Power的定义,指数一被消去。
2024年02月13日 09点02分
@泥萌都👀 ……你执行下 # // FullForm
2024年03月02日 04点03分