在 Mathematica 中,我试图在更复杂的表达式中使用转换,同时将表达式映射到列表上。由于某种原因,使用转换规则会产生完全不同的值,但我无法从文档中说出原因。
Clear[x, values]
values = {{1}, {2, Null, 3}, {4, 5, Null, 6, Null }}
Out[122]= {{1}, {2, Null, 3}, {4, 5, Null, 6, Null}}
Length[x] /. x -> DeleteCases[#, Null] & /@ values
Out[123]= {0, 0, 0}
Length[DeleteCases[#, Null]] & /@ values
Out[124]= {1, 2, 3}
更新:到目前为止,Length[x]
即使x
未定义,我也能够确定这是一个有效的表达式,因为 to 的参数Length[]
是一个表达式,它返回该表达式中的组件数。现在我需要了解如何将评估延迟到x
替换之后。