ExpressionTree
ExpressionTree[expr]
从表达式 expr 的结构中给出 Tree 对象.
ExpressionTree[expr,struct]
从表达式 expr 中给出一个 Tree 对象,其数据和子树由 struct 指定.
更多信息和选项
- ExpressionTree 可以根据指定的列表、数组、规则、XML 和任意表达式构造 Tree 对象.
- 任意表达式的 struct 的可能形式包括: »
-
"HeadTrees" 按层级排序的对应于表达式的子表达式的头部的树图 "Heads" 按层级排序的表达式的子表达式的头部 "Subexpressions" 按层级排序的表达式的子表达式 "Atoms" -1 级处表达式的原子子表达式 Null 按层级排序的没有数据的表达式的子表达式 None 表达式自身 - ExpressionTree 采用与 Tree 相同的选项.
- ExpressionTree 的额外选项包括:
-
Heads 包括表达式的头部和其作为子树的部分 - 具有默认选项设置 HeadsFalse 的表达式 f[a,b][g[1,2],x] 的可能结构包括:
- 带有选项设置 HeadsTrue 的这些结构的版本包括: »
- 用于任意表达式的 struct 的保留形式包括:
-
"HeldHeadTrees" 按层级对应于表达式的子表达式的保留头部的树图 "HeldHeads" 按层级排序的保留表达式的子表达式的头部 "HeldSubexpressions" 以层排序的表达式的保留子表达式 "HeldAtoms" 在 -1 层处的表达式的保留原子子表达式 - 常见表达式类型的 struct 可能形式包括:
-
"XML" XML 对象的标签、属性和元素 - 用于嵌套列表和关联的 struct 的可能形式包括: »
-
"List" 嵌套列表的元素 "Association" 嵌套关联的元素 "Dataset" 数据集的标题和数据 - 嵌套规则 struct 的可能形式包括: »
-
"Rules" 嵌套规则的左侧和叶子 "JSON" JSON 对象的名称和值,使用名称作为数据 "RawJSON" JSON 对象的名称和值,使用名称作为键 "FileSystem" 文件系统中的目录和文件
范例
打开所有单元关闭所有单元范围 (14)
任意表达式 (6)
"HeadTrees" (1)
如果 AtomQ[head] 给出 True,则 ExpressionTree[head[arg1,arg2,…],"HeadTrees"] 给出一棵树,其根包含 head,子节点由 ExpressionTree[argi,"HeadTrees"] 给出:
如果 AtomQ[head] 给出 False,则 ExpressionTree[head[arg1,arg2,…],"HeadTrees"] 给出一颗树图,其根包含 ExpressionTree[head,"HeadTrees"] 而非 head:
ExpressionTree[atom,"HeadTrees"] 给出一个包含原子表达式 atom 的叶子:
"Heads" (1)
ExpressionTree[head[arg1,arg2,…],"Heads"] 给出根包含 head 且孩子由 ExpressionTree[argi,"Heads"] 给出的树结构:
ExpressionTree[atom,"Heads"] 给出一个包含原子表达式 atom 的叶子:
"Subexpressions" (1)
ExpressionTree[expr0[expr1,expr2,…],"Subexpressions"] 给出根包含 expr0[expr1,expr2,…] 且孩子由 ExpressionTree[expri,"Subexpressions"] 给出的树结构:
ExpressionTree[atom,"Subexpressions"] 给出一个包含原子表达式 atom 的叶子:
"Atoms" (1)
ExpressionTree[expr0[expr1,expr2,…],"Atoms"] 给出由 ExpressionTree[expri,"Atoms"] 给出的具有子节点的树:
ExpressionTree[atom,"Atoms"] 给出一个包含原子表达式 atom 的叶子:
Null (1)
ExpressionTree[expr0[expr1,expr2,…],Null] 给出由 ExpressionTree[expri,Null] 给出的具有子节点的树:
ExpressionTree[atom,Null] 给出一个包含 Null 的叶子,表示原子表达式 atom:
None (1)
ExpressionTree[expr,None] 给出一个包含 expr 的叶子:
选项 (11)
属性和关系 (15)
默认结构 "HeadTrees" 下,ExpressionTree 构建一个树结构,可用子树包含给出子表达式标头的树结构的数据:
结构 "Heads" 给出一个树结构,与 "HeadTrees" 表示同样的数据,但数据包括子表达式标头自身:
ExpressionTree[expr,"Heads"] 给出类似于 TreeForm[expr] 的输出:
结构 "Subexpressions" 给出了一棵树,其形状与 "Heads" 给出的形状相同,但数据包含子表达式本身而非其头部:
在第 n 层的树的子树状结构对应第 n 层的除标头外的表达式的某些部分:
结构 "Atoms" 给出一个树状结构,该结构与 "Subexpressions" 给出的形状一样,但仅在叶子节点处储存数据:
Null 结构给出一棵形状相同但没有数据的树:
使用 TreeFold 在每一个子树上方插入父辈节点:
默认情况下,Map 映射在表达式中的参数上:
使用 TreeFold 在每个子树前插入兄弟节点
Map 在设置了 HeadsTrue 的表达式中映射子表达式:
TreeMap 映射在树图中子树的数据上:
Map 可直接映射在头部和叶片上:
TreeMap 可以仅映射树中叶子的数据:
Map 可直接映射于表达式中的原子上:
Depth[expr] 等价于 TreeDepth[ExpressionTree[expr]]+1:
Depth[expr,HeadsTrue] 等价于 TreeDepth[ExpressionTree[expr,"Subexpressions"]]+1:
ExpressionTree 在构建树状结构之前计算子表达式:
使用 Unevaluated 可以将子表达式的计算推迟到树状结构建立以后进行:
保留结构保证子表达式封装在 HoldForm 中,这样可以阻止所有计算:
显示 HoldForm 封装:
文本
Wolfram Research (2021),ExpressionTree,Wolfram 语言函数,https://reference.wolfram.com/language/ref/ExpressionTree.html (更新于 2022 年).
CMS
Wolfram 语言. 2021. "ExpressionTree." Wolfram 语言与系统参考资料中心. Wolfram Research. 最新版本 2022. https://reference.wolfram.com/language/ref/ExpressionTree.html.
APA
Wolfram 语言. (2021). ExpressionTree. Wolfram 语言与系统参考资料中心. 追溯自 https://reference.wolfram.com/language/ref/ExpressionTree.html 年