谁能解释一下,为什么
a[[1]] /. {a -> {{1}, {2}}}
返回错误Part::partd: Part specification a[[1]] is longer than depth of object.
并且
(Transpose[a])[[1]] /. {a -> {{1}, {2}}}
返回
{{1}, {2}}
尽管
(Transpose[{{1}, {2}}])[[1]]
返回
{1, 2}
?
谁能解释一下,为什么
a[[1]] /. {a -> {{1}, {2}}}
返回错误Part::partd: Part specification a[[1]] is longer than depth of object.
并且
(Transpose[a])[[1]] /. {a -> {{1}, {2}}}
返回
{{1}, {2}}
尽管
(Transpose[{{1}, {2}}])[[1]]
返回
{1, 2}
?
嗯,在这个表达式中
a[[1]] /. {a -> {{1}, {2}}}
左边的子表达式/.
将首先被评估,如果a
没有第一部分,Mathematica会抱怨。
对于你的第二个表达
(Transpose[a])[[1]]
尝试评估FullForm[(Transpose[a])]
. 这应该返回一个表达式(这台机器上没有Mathematica,所以我不是 100% 确定,但我怀疑它会返回Transpose[a]
,即原始表达式没有被评估,因为Mathematica没有规则将其转换为其他任何东西。)
Part
, 当应用于表达式时, 应用于它们FullForm
和Part[FullForm[(Transpose[a])],1]
is a
, 然后可用于替换规则对其进行操作。
再次,评估FullForm[(Transpose[{{1}, {2}}])]
,您现在应该开始了解情况了。
我现在已经在我的Mathematica机器上检查了这个,我对正在发生的事情的猜测是好的。